js去重的几种方法

1.   arr.includes(item) => arr数组里面是否包含item这个元素,返回true或者false,与arr.indexOf(item) === -1相反(等于-1说明不包含这个元素)


let arr =[1,2,3,3,2,1]
var newArr = [];
for(var i in arr){
    !newArr.includes(arr[i]) && newArr.push(arr[i])
}
console.log(newArr)

2.reduce

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

参数

参数 描述
function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。
函数参数:
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值

 

 

let arr =[1,2,3,3,2,1]
var newArr = arr.reduce(function (prev, cur) {
    !prev.includes(cur) && prev.push(cur);
    return prev;
},[]);
console.log(newArr)

 

3.利用set,这种数据类型里面的元素必须保证唯一性,所以正好可以处理这个问题:

let arr = [1,2,3,3,2,1]
console.log(new Set(arr))

// 直接使用扩展运算符就能再转化为数组

console.log([...new Set(arr)]);

4.利用对象的key是唯一性的特点也可以去重

let arr = [1,2,3,3,2,1]
let obj = {}
arr.forEach(ee=>{
    obj[ee] = ''
})
console.log(Object.keys(obj))

你可能感兴趣的:(算法,JavaScript面试问题)