Skip to main content

移除数组重复元素

题目

数组按 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
}