数组嵌套对象去重
1,使用reduce来进行去重操作,
let obj = {};
newArr = newArr.reduce((cur, next) => {
obj[next.id] ? '' : (obj[next.id] = true && cur.push(next));
return cur;
}, []); // 设置cur默认类型为数组,并且初始值为空的数组
数组去重
1,filter() 和 indexOf() 实现去重
let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]
let uniqueArray = originalArray.filter((item, index, array) => {
return array.indexOf(item) === index
})
// uniqueArray === [1, 2, 3, 4]
indexOf 返回它为给定值找到的第一个索引,如果它不是重复值,那么该项的索引必须相同!
2,reduce() 和 includes() 实现去重
let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]
let uniqueArray = originalArray.reduce((unique, item) => {
unique.includes(item) ? unique : [...unique, item]
}, [])
// uniqueArray === [1, 2, 3, 4]
reducer 函数之后传入的空数组是累加器的起始值,因此第一次通过reduce,unique是一个空数组。
如果它确实包含该项,则返回累加器而不做任何更改,实际上是“跳过”该项。
如果它不包含该项,请将累加器中的值分散到一个新数组中,然后添加正在考虑的项。
3,Set 实现去重
let originalArray = [1, 2, 3, 4, 1, 2, 3, 4]
let uniqueArray = array => [...new Set(array)]
// or
let uniqueArray = Array.from(new Set(originalArray))
// uniqueArray = [1, 2, 3, 4]
利用了在 ES6 中引入的Set对象的能力。集合保证保留插入项的顺序,并且只包含唯一值,转换回一个数组并返回结果。