如何在 JavaScript 中与两个对象数组进行内部连接?

How can I inner join with two object arrays in JavaScript?

我需要在 javascript 中对两个数组进行内部连接,如下所示:

    
    array1 = 
    [
      {
        "id": 1,
        "name": "Tufan"
      },
      {
        "id": 2,
        "name": "Batuhan"
      },
      {
        "id": 3,
        "name": "Hasan"
      }
    ]
    
    array2 = 
    [
      {
        "name": "yyy",
        "externalid": "1",
        "value": "Asd"
      },
      {
        "name": "aaaa"
        "externalid": "2",
        "value": "ttt"
      }
    ]
    
    expectedArray = 
    [
      {
        "id": 1,
        "name": "Tufan",
        "externalid": "1",
        "value": "Asd"
      },
      {
        "id": 2,
        "name": "Batuhan",
        "externalid": "2",
        "value": "ttt"
      }
    ]

规则:

  1. 上:array2.externalid = array1.id
  2. select: array1.id, array1.name, array2.externalid, array2.value

我的做法:

array1.filter(e => array2.some(f => f.externalid == e.id));
// I need help for continue

我该怎么做?

无所谓信息:我用ES5和纯javascript

你可以这样做:

const res = array2.map((item) => {
  const related = array1.find((el) => el.id == item.externalid);
  return { ...item, ...related };
});

使用 map 遍历 array2 并使用 find 获取 array1 的相对值。