基于数组javascript中的键在数组组合上创建新数组

基于数组javascript中的键在数组组合上创建新数组,javascript,Javascript,我有两个数组作为输入(array1和array2),我想检查其id是否匹配。 如果存在匹配项,则应将它们包含在名为result的新数组中 array1 = [ { x_id:6711230070958, id:279482 }, { x_id:6770878283950, id:213 }, { x_id:6753301168302, id:330120 } ]; array2 = [ { id: 279482, stock: 9 }, { id: 31231, stock: 2 }

我有两个数组作为输入(array1和array2),我想检查其id是否匹配。 如果存在匹配项,则应将它们包含在名为result的新数组中

array1 = [
{ x_id:6711230070958, id:279482 },
{ x_id:6770878283950, id:213 },
{ x_id:6753301168302, id:330120 }
];
    
array2 = [
{ id: 279482, stock: 9 }, 
{ id: 31231, stock: 2 }, 
{ id: 330120, stock: 2 }
];

result [
{ x_id:6711230070958, id: 279482, stock: 9 },
{ x_id:6753301168302, id: 330120, stock: 2 }
]
为了找到匹配项,我尝试使用包含的过滤器。 有人对此有什么想法吗?

试试这个

array1 = [
    { x_id:6711230070958, id:279482 },
    { x_id:6770878283950, id:213 },
    { x_id:6753301168302, id:330120 }
];
    
array2 = [
    { id: 279482, stock: 9 }, 
    { id: 31231, stock: 2 }, 
    { id: 330120, stock: 2 }
];


let arr3 = array1.map((item, i) => Object.assign({}, item, array2[i]));

console.log(arr3)
试试这个:

array1 = [
{ x_id:6711230070958, id:279482 },
{ x_id:6770878283950, id:213 },
{ x_id:6753301168302, id:330120 }
];
    
array2 = [
{ id: 279482, stock: 9 }, 
{ id: 31231, stock: 2 }, 
{ id: 330120, stock: 2 }
];

result = [];

array1.forEach(ele=> {
  let match = array2.find(e => e.id == ele.id);
  if(match)
     result.push(Object.assign({}, ele, match))
})


我对这个问题的大部分想法都来自这个网站上的答案。也许你可以通过你的问题来展示你做了哪些研究,以及你在这些研究的基础上做了哪些尝试?每当你在
forEach
中编写
push
时,你可能可以使用
map
…非常感谢你的解决方案@这是一个有条件的推送。在使用map的数组中,我们最终会有未定义的条目(除非在map之后再次使用filter)。这会给我三个结果,其中我希望有2:),但感谢快速响应。这是因为这里没有添加id匹配条件。