JS 数组去重

it2022-05-05  126

1、通过遍历原数组和新数组是否重复。new一个新数组存放已经遍历过的、唯一的元素。

function uniqueArr(list){   var newArr= [list[0]];   for(var i=1;i<list.length;i++){     var isRepeat = false;     for(var j=0;j<newArr.length;j++){       if(list[i] == newArr[j]){        isRepeat= true;         break;       }     }     if(!isRepeat){       newArr.push(list[i]);     }   }   return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]

2、通过先排序,再与相邻的元素进行比较去重(排序之后相同的元素会相邻)

function uniqueArr(list){   list.sort();//对数组进行排序   var newArr= [];   for(var i=1;i<list.length;i++){     if(list[i]!=list[i+1]) newArr.push(list[i]);   }   return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]

3、新建一个对象进行存放,再遍历数组,判断对象是否存在该值(obj[i])

function uniqueArr(list){   var obj= {},newArr=[list[0]];   obj[list[0]]=true;   for(var i=1;i<list.length;i++){     if(!obj[list[i]]){       obj[list[i]]=true;       newArr.push(list[i]);     }   }   return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]

4、通过indexOf进行判断(新建一个数据存放唯一的元素,遍历原数组判断(newArr.indexOf(oldArr[i])==-1))

function uniqueArr(list){   var newArr=[list[0]];   for(var i=1;i<list.length;i++){     if(newArr.indexOf(list[i])==-1){       newArr.push(list[i]);     }   }   return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]

5、使用ES6 SET数据结构进行去重:

function dedupe(array) { return Array.from(new Set(array)); } dedupe([1, 1, 2, 3]) // [1, 2, 3]

 

转载于:https://www.cnblogs.com/ducky-L/p/7266383.html


最新回复(0)