// 题意 例如arr1=[1,2,3,4,5] arr2=[1,2] arr1减去arr2的结果就是 [3,4,5]
var arr1 = [
{
name: 'zs',
id: 18
},
{
name: 'xiaoming',
id: 20
},
{
name: 'lisi',
id: 22
},
{
name: 'ww',
id: 25
},
{
name: 'liga',
id: 26
}
]
var arr2 = [
{
name: 'zs',
id: 18
},
{
name: 'xiaoming',
id: 20
},
]
// 方法一
function myRemove(arr1, arr2) {
var newArr = []
arr1.forEach(function (obj1, index) {
var findRet = arr2.find(function (obj2) {
return obj1.id === obj2.id
})
if (!findRet) {
newArr.push(obj1)
}
})
return newArr
}
// 方法二
function myRemove2(arr1, arr2) {
return arr1.filter(function (obj1, index) {
return !arr2.find(function (obj2) {
return obj1.id === obj2.id
})
})
}
// 方法三
console.log(
arr1.reduce((arr, item) => {
var findRet = arr2.find(function (obj) {
return item.id === obj.id
})
// return的值会被当成下一次循环的sum
if (!findRet) {
arr.push(item)
}
return arr
}, [])
);