Javascript 如何用对象比较两个数组?
我将id与两个带有对象的数组进行比较 以下是我的功能: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
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}