list对象去重_javascript数组对象去重的5种⽅式
时隔三年,我华仔⼜回来了。
现在出发点不⼀样,只写写总结和⼼得。
var
1. Array.from(new Set(arr.map(e => e[key]))) 把arr⾥⾯的key去重
2. 返回新值
1. 根据key过滤arr
2. 根据index过滤arr
var clearDuplicate3 = (arr, key) => duce((acc, current) => {
const x = acc.find(item => item[key] === current[key]);
if (!x) {
at([current]);
} else {
return acc;
}
}, []);
filter过滤对象数组
1. 理解reduce, 第⼀个参数是函数,函数两个参数,第⼀个是迭代值,第⼆个是当前值,第⼆个参数是第⼀个迭代值,返回值都是迭代
值。
2. 在迭代值中寻当前值,如果不存在,把当前值和迭代值concat(两个数组合并)返回,如果存在,直接返回当前的迭代值,不做合
并处理。
var clearDuplicate4 = (arr, key) => {
var set = new Set()
return arr.filter(e => {
var duplicate = set.has(e[key])
set.add(e[key])
return !duplicate
})
}
1. 和上⾯的⽅式类似,只是相同值的⽅式不同。利⽤set的has⽅法判断当前值存不存在,不管存不存在,都把当前值add到set中(利
⽤set去重)
2. 如果不存在,就过滤出来,存在,就不要这个值。
var clearDuplicate5 = (arr, key) => arr.filter((ele, index, a) => (a.map(e => e[key]).indexOf(ele[key])) ===index)
这个⽅法理解起来难,但是使⽤起来简单。
1. ⾸先通过filter过滤,filter三个参数,第⼀个是当前值,第⼆个是,当前索引,第三个是数组本⾝
2. (a.map(e => e[key]).indexOf(ele[key])) 将key映射到新的数组,然后⽤当前的值在这个新的数组中下标,到第⼀个就返回第⼀
个数组下标
3. 将返回的下标和当前的下标对⽐,⼀样就说明是唯⼀值,不⼀样的话,就说明,在当前下标之前就已经匹配到了,这就是重复的意思这5个去重⽅法都⽐较简单实⽤好理解。
⼤神们多多指点,有问题评论区见。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。