我有两个结构相同的数组。
我必须比较它们,如果在第一个数组中找到第二个数组中的项目(通过 id(,我应该将标志isNew设置为true- 否则设置为false。
const arr1 = [
{
id: 1,
text: 'Text 1'
},
{
id: 2,
text: 'Text 2'
},
{
id: 3,
text: 'Text 3'
}
];
const arr2 = [
{
id: 2,
text: 'Text 2'
}
];
const result = [
{
id: 1,
text: 'Text 1',
isNew: false
},
{
id: 2,
text: 'Text 2',
isNew: true
},
{
id: 3,
text: 'Text 3',
isNew: false
}
];
您可以通过组合map
和find
轻松做到这一点:
result = arr1.map(el => {
if (arr2.find(el2 => el.id === el2.id) {
el.isNew = true;
}
return el;
}
这里有一种方法:
const arr1Ids = [];
arr1.forEach((obj)=>{
arr1Ids.push(obj.id);
});
arr2.forEach((obj)=>{
if ( arr1IdArr.includes(obj.id) ) {
result.forEach((rObj)=>{
if ( rObj.id === obj.id ) {
rObj.isNew = true;
}
})
}
})
虽然我赞成乔治马的回答,因为它更简洁