javascript中数组去重

1、遍历数组,双重循环,如果新数组中不存在则push到新数组

 1     Array.prototype.distinct = function(){
 2         // 原数组
 3         var arr = this;
 4         // 新数组
 5         var result = [];
 6           var len = arr.length;
 7           var i = 0;
 8           var j = 0;
 9           for(i = 0; i < len; i++){
10               for(j = i + 1; j < len; j++){
11                   if(arr[i] === arr[j]){
12                       j = ++i;
13                   }
14               }
15               result.push(arr[i]);
16           }
17           return result;
18       }

2、对原数组直接通过splice操作,删除重复值,注意在删除重复值的时候,相应的修改数组的长度

Array.prototype.distinct = function (){
 var arr = this;
  var i = 0;
  var j = 0;
  var len = arr.length;
 for(i = 0; i < len; i++){
     for(j = i + 1; j < len; j++){
         if(arr[i] == arr[j]){
             arr.splice(j,1);
             len--;
             j--;
         }
     }
 }
 return arr;
};
 

3、利用es6的set方法

1 var arr = [1,2,3,3,4];
2 var set = new Set(arr);
3 var newArr = Array.from(set);

4、filter+indexof(代码简洁,效率较好)

1 let arr = [1, 'a', 'a', 'b', 'd', 1, 0, 2, 2];
2 function unique(arr){
3     return arr.filter((item, index, array) =>  array.indexOf(item) === index);
4 }

最近正好碰到了数组去重,老生常谈咯,但是当自己上手写的时候还是会有这那的问题哟。

Fighting! Fighting! 

猜你喜欢

转载自www.cnblogs.com/Vibge/p/9338001.html