我有以下两个数组,我想获取第二个数组,但匹配的对象应包含一个额外的键“ select”:true,而不匹配的对象应包含“ select”:false。var firstArray = [{id: -1, type: "group"}, {id: -2, type: "group"}];var secondArray = [{id: -3, type: "group"}, {id: -2, type: "group"}, {id: -1, type: "group"}];预期结果:var expectedArray = [{id: -1, type: "group", select: true}, {id: -2, type: "group", select: true}, {id: -3, type: "group", select: false}];我试过下面的代码:for(var i=0;i<firstArray.length;i++){ for(var j=0;j<secondArray.length;j++){ console.log(firstArray[i].id,secondArray[j].id) if(firstArray[i].id===secondArray[j].id){ if(secondArray[j].hasOwnProperty('select')){ secondArray[j].select=true; // console.log('true select property',secondArray[j].select) } else{ secondArray[j].select=true; // console.log('true adding new',secondArray[j].select) } }else{ secondArray[j]['select']=false; // console.log('false not match',secondArray[j].select) } } }
3 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
这应该工作:
var ans = secondArray.map(s=> {
var match = firstArray.find(f=> f.id === s.id);
if(match) s['select'] = true;
else s['select'] = false;
return s;
})
添加回答
举报
0/150
提交
取消