const arr1 = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}, {id: 7}]
const arr2 = [{id: 1}, {id: 2}, {id: 4}, {id: 6}, {id: 7}]
const arr2Ids = arr2.map(item => item.id) // 获取arr2的id集合
const result = arr1.filter(item => {
return !arr2Ids.includes(item.id) // 过滤掉arr2Ids中包含的id
})
console.log(result) // [{id: 3}, {id: 5}]
主要思路是:
- 获取数组arr2中的所有id,构成一个id集合
- 遍历数组arr1,过滤掉id在arr2Ids集合中的元素
- 最终得到删除arr2中元素后的新数组
tips:之前一直傻傻的以为对象数组map后也只能返回对象数组,上面的例子告诉我,可以返回任何元素的数组的!!!!!!!
const arr2Ids = arr2.map(item => item.id)
arr2Ids =[1,2,4,6,7]