前言
在一对象数组中,让属性相同的数据以某个属性值为准
一、数组示例
const arr= [{
score: 100,
project: 10,
id: 1
}, {
score: 101,
project: 11,
id: 2
}, {
score: 102,
project: 10,
id: 1
}, {
score: 103,
project: 11,
id: 2
}, {
score: 104,
project: 12,
id: 3
}]
二、过滤
let newArr = arr.splice(0).sort((a, b) => a.id > b.id ? 1 : -1)
for (let i = 0; i < newArr.length; i++) {
for (let j = i + 1; j < newArr.length; j++) {
if (newArr[i] ?.project_id === newArr[j] ?.project_id && newArr[i] ?.id === newArr[j] ?.id) {
if (newArr[i] ?.score < newArr[j] ?.score) {
newArr.splice(i, 1)
i--
} else {
newArr.splice(j, 1)
j--
}
}
}
}
总结
当找到某一个符合条件的元素时,删除掉了当前的元素,则需要将遍历index-1;
'?.'为可选链操作符,当引用为空(null或undefined)时,不会引起错误.