js数组去重(包含ES5,ES6多种方法)

1.ES5常用方法

 let arr =[1,2,2,3,4,4,4,4,7]
 for(let i =0;i<arr.length;i++){
 //对数组进行遍历,用第一个依次和后面的进行比较
    for(let j=i+1;j<arr.length;j++){
    //如果相等就将后面相等的删除,并且删除后下标-1
        if(arr[i]==arr[j]){
            arr.splice(j,1)
            i--
        }
    }
 }
 //此时的arr就是去重后的数组

2.ES6

let arr =[1,2,2,3,4,4,4,4,7]
//利用了ES6的集合元素唯一性
arr= [ ...new Set(arr)];
//此时的arr就是去重后的数组

3.利用其它方法进行数组去重,原理大致一样

let arr =[1,2,2,3,4,4,4,4,7]
//利用过滤器和indexOf返回一个索引相等的元素
arr = arr.filter((item,index)=>{
	//利用了indexOf只会查找到第一个元素符合要求的,然后返回索引,
	//判断查找到的第一个元素是不是当前元素的索引,如果是的话就证明唯一,就返回当前的元素
	//如果不是的话就证明不唯一,就不返回
    return arr.indexOf(item) === index
});
//此时的arr为去重后的数组
//与filter原理类似,但是forEach不返回,因此需要借助中间遍历b 
//来存储去重后的数组,此时b就是去重后的
let arr =[1,2,2,3,4,4,4,4,7]
let b = []
arr.forEach((item,index)=>{
    if(arr.indexOf(item) === index){
        b.push(item)
    }
})

你可能感兴趣的:(JavaScript,算法,javascript)