数组去重的几种方法

2022-06-13 08:46:41

数组去重:去除数组中重复的元素。

1.将数组的每一个元素依次与其他元素做比较,发现重复元素,利用数组方法splice()删除重复元素

var arr=[2,4,6,8,4,7,2,5];for(var i=0; i< arr.length; i++){// 获取当前元素后的所有元素for(var j= i+1; j< arr.length; j++){// 判断两个元素的值是否相等if(arr[i]== arr[j]){// 如果相等则证明出现了重复的元素,则删除j对应的元素
             arr.splice(j,1);// 当删除了当前j所在的元素以后,后边的元素会自动补位// 此时将不会在比较这个元素 所以需要在比较一次j所在的位置的元素 使j自减
             j--;}}}
console.log(arr);

2.ES6的set()方法

var arr=[2,4,6,8,4,7,2,5];// Set数据结构类似于数组,允许你存储任何类型的唯一值var result= Array.from(newSet(arr));//利用Array.from将Set结构转换成数组
console.log(result);

3.indexof:创建一个新数组,并存放原数组的第一个元素,然后将原数组元素和新数组的元素一一对比,若不同则存放在新数组中。

var arr=[2,4,6,8,4,7,2,5];var result=[];// forEach遍历数组
arr.forEach(item=>{// indexOf判断新数组中有没有这个元素,没有返回-1if(result.indexOf(item)==-1){
    	result.push(item);}})
console.log(result);

4.ES6中filter()方法

var arr=[2,4,6,8,4,7,2,5];// filter 过滤数组var result= arr.filter((item, index)=>{// indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。return arr.indexOf(item)=== index;})
console.log(result);

5.reduce()和includes()方法

var arr=[2,4,6,8,4,7,2,5];// reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。// 第一个参数pre是上一次循环的结果,第二个参数item是当前的元素var result= arr.reduce((pre, item)=>{// 判断上次的结果包不包含当前元素 包含直接返回pre 不包含用...方法展开后再加进去return pre.includes(item)? pre:[...pre, item]},[]);//初始值是个空数组
console.log(result);
  • 作者:plus21n
  • 原文链接:https://blog.csdn.net/plus21n/article/details/115023369
    更新时间:2022-06-13 08:46:41