reduce 對象數(shù)組去重:
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小張"},
{id: 2, name: "小李"},
{id: 3, name: "小孫"},
{id: 1, name: "小周"},
{id: 2, name: "小陳"}
];
let obj = {}
person = person.reduce((cur, next) => {
if (!obj[next.id]) {
obj[next.id] = true
cur.push(next)
}
return cur
}, [])
console.log(person)
解析:
其實就是用 obj 來存儲已經(jīng)放入新數(shù)組的元素持寄,每次遍歷舊數(shù)組都去 obj 中檢查是否已經(jīng)存在 id值相同的元素。如果不存在废麻,則放入新數(shù)組模庐。
當然,很多人是這么寫的:
person = person.reduce((cur, next) => {
obj[next.id] ? '' : obj[next.id] = true && cur.push(next)
return cur
}, [])
其實是一樣的