现在有两个数组(分别为A和B),数组A有skill数组属性,而其下默认的每一项的isChecked为false; 而数组B同样也有skill数组属性,而其下默认的每一项的isChecked为true; 现需要将数组A的skill数组里面跟数组B的skill的相同数据也将isChecked变为true,代码如下:
let arr1 = [
{
id: 1,
name: '麦迪',
skill: [
{
uid: 1,
title: '干拔',
isChecked: false
},
{
uid: 2,
title: '突破',
isChecked: false
},
{
uid: 3,
title: '变向',
isChecked: false
}
]
},
{
id: 2,
name: '科比',
skill: [
{
uid: 1,
title: '急停跳投',
isChecked: false
},
{
uid: 2,
title: '扣篮',
isChecked: false
},
{
uid: 3,
title: '突破',
isChecked: false
}
]
}
]
let arr2 = [
{
id: 1,
name: '麦迪',
skill: [
{
uid: 1,
title: '干拔',
isChecked: true
}
]
},
{
id: 2,
name: '科比',
skill: [
{
uid: 2,
title: '扣篮',
isChecked: true
}
]
}
]
let flagArr = arr1.map((item, index) => {
for (let i = 0; i < arr2.length; i++) {
if (item.id == arr2[i].id) {
return {
...item,
skill: item.skill.map((_item, _index) => {
for (let j = 0; j < arr2[i].skill.length; j++) {
if (arr2[i].skill[j].uid == _item.uid) {
return {
..._item,
isChecked: true
}
}
}
return _item
})
}
}
}
return item;
})
console.log('flagArr', flagArr)
打印结果如下: