移除数组重复元素
题目
数组按 id 去重, 保留 w 最大的那一个, 且数组元素相对顺序不变.
示例
输入: arr = [ { id: 1, w: 1 }, { id: 2, w: 2 }, { id: 1, w: 2 }, { id: 2, w: 1 } ]
输出: [ { id: 2, w: 2 }, { id: 1, w: 2 } ]
题解
function noRepeat(arr) {
let res = [],
map = {}
arr.forEach((item) => {
if (map[item.id] && map[item.id] < item.w) {
for (let i = 0; i < res.length; i++) {
if (item.id === res[i].id) {
res.splice(i, 1)
res.push(item)
}
}
} else if (!map[item.id]) {
res.push(item)
map[item.id] = item.w
}
})
return res
}