实验对象数组
在let listOne = [
{ name: 'one' },
{ name: "two" },
{ name: 'three' },
{ name: "four" },
{ name: '1' }
]
let listTwo = [
{ name: 'three' },
{ name: '1', },
{ name: '2' },
{ name: '3' },
{ name: '4' },
{ name: 'one' },
{ name: 'two' }
]插入代码片
方法 一
// 当检测到有相同项时直接跳过当前所有循环
function RemoveSameItem(listOne, listTwo, key) {
let newList = []
loop: for (let itemOne of listOne) {
for (let itemTwo of listTwo) {
if (itemOne[key] == itemTwo[key]) {
continue loop
}
}
newList.push(itemOne)
}
return newList.concat(listTwo)
}
let result = RemoveSameItem(listOne, listTwo, 'name')
输出结果
方法 二
function RemoveSameItem(listOne, listTwo, key) {
return [].concat(listOne, listTwo.filter(itemTwo => {
return !listOne.find(itemOne => itemOne[key] == itemTwo[key])
}))
}
let result = RemoveSameItem(listOne, listTwo, 'name')
输出结果
说明
方法一相当于是方法二的解释版,具体还需要理解 数组的 find() 方法和 filter() 方法的用法。
不太理解的可以去先看看两个数组的方法解释,然后再来看方法一再看方法二。