Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用对象比较两个数组?_Javascript - Fatal编程技术网

Javascript 如何用对象比较两个数组?

Javascript 如何用对象比较两个数组?,javascript,Javascript,我将id与两个带有对象的数组进行比较 以下是我的功能: array1 = [ { id: 1 }, { id: 2 }, { id: 3 } ]; array2 = [ { id: 1 }, { id: 2 }, { id: 3 } ]; const compareFunction = (array1, array2) => { array2.map((allValue) => { array1.map((value) => { allValue.s

我将id与两个带有对象的数组进行比较

以下是我的功能:

array1 = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];

array2 = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];

const compareFunction = (array1, array2) => {
  array2.map((allValue) => {
    array1.map((value) => {
      allValue.selected = value.id === allValue.id;
    });
  })

 return array2;
}
我想我会得到像这样的
array2

[{ id: 1, selected: true }, { id: 2, selected: true },{ id: 3, selected: true }]
但实际上,
array2

[{ id: 1, selected: false }, { id: 2, selected: false },{ id: 3, selected: true }]
只有最后选择的数组参数变为true


哪一步错了?谢谢。

将第二个数组转换为一组
id
值。使用
array.map()
迭代第一个数组,并通过扩展当前对象并添加
所选的值,为每个项目创建一个新对象。要获取所选的
值,请检查集合是否包含当前项目
id

constarray1=[{id:1},{id:2},{id:3}];
常量数组2=[{id:1},{id:2},{id:3}];
常量a2Set=新集合(array2.map(o=>o.id))
const result=array1.map(o=>({…o,selected:a2Set.has(o.id)}))
console.log(结果)
签出此项:

array1=[{id:1},{id:2},{id:3}];
array2=[{id:1},{id:2},{id:3}];
常量比较函数=(数组1,数组2)=>{
常量结果=[];
array2.forEach(arr2item=>{
设selected=false;
对于(让1阵列项目1){
所选=arr1item.id==arr2item.id;
如果(选择)中断;
}
push({id:arr2item.id,selected:selected});
});
返回结果;
}

log(比较函数(array1,array2))你在寻找什么逻辑?如果一个索引中的
id
与另一个数组中相同索引中的
id
匹配,您希望
selected
true
吗?是的,我的
array1
有时会是
[{id:1}]
[{id:1},{id:2}]
[{id:1},{id:3}]
听起来可能有点不同-对象总是有序的,还是您只是想看看是否存在具有相同ID的对象?(例如,如果一个数组是
[{id:2},{id:3}]
,您希望不选择
s,还是两个?)每个
循环值->
{id:1}
{id:2}
{id:3}