image.png
去重Set
const arr = ['張三','張三','三張三']
let set = new Set(arr); // set 自帶去重
// Set { '張三', '三張三' }
console.log(set);
console.error(Array.from(set)); // [ '張三', '三張三' ]
可直接在控制臺粘貼打印 f12
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小張"},
{id: 2, name: "小李"},
{id: 3, name: "小孫"},
{id: 1, name: "小周"},
{id: 2, name: "小陳"},
];
let obj = {};
let peon = person.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //設置cur默認類型為數組,并且初始值為空的數組
console.log(peon);
// (4) [{…}, {…}, {…}, {…}]0: {id: 0, name: "小明"}1: {id: 1, name: "小張"}2: {id: 2, name: "小李"}3: {id: 3, name: "小孫"}length: 4__proto__: Array(0)
去重reduce
let hash = {};
let config = [{
name: 2,
state: true,
output: 'Y',
}, {
name: 3,
state: true,
output: 'A',
}, {
name: 5,
state: true,
output: 'S',
}, {
name: 7,
state: true,
output: 'B',
}];
config = [...config, {
name: 3,
state: false,
output: 'A',
}]
const newArr = config.reduceRight((item, next) => {
hash[next.name] ? '' : hash[next.name] = true && item.push(next);
return item
}, []);
console.log(JSON.stringify(newArr));
// [{"name":3,"state":false,"output":"A"},{"name":7,"state":true,"output":"B"},{"name":5,"state":true,"output":"S"},{"name":2,"state":true,"output":"Y"}]
大神總結:https://www.cnblogs.com/caideyipi/p/7679681.html
原文參考鏈接 https://blog.csdn.net/u010377383/article/details/79645839 (reduce)
https://blog.csdn.net/original_heart/article/details/79491768
擴展文章
js 刪除兩個數組中id相同的對象
image.png