JS实现数组去重方法总结(三种常用方法)

Posted natchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS实现数组去重方法总结(三种常用方法)相关的知识,希望对你有一定的参考价值。

方法一:

双层循环,外层循环元素,内层循环时比较值

如果有相同的值则跳过,不相同则push进数组

Array.prototype.distinct = function(){

 var arr = this,result = [], i,j,len = arr.length;

 for(i = 0; i < len; i++){

 for(j = i + 1; j < len; j++){

   if(arr[i] === arr[j]){

    j = ++i;

   }

 }

 result.push(arr[i]);

 }

 return result;

}

var arra = [1,2,3,4,4,1,1,2,1,1,1];

arra.distinct();    //返回[3,4,2,1]

方法二:利用splice直接在原数组进行操作

双层循环,外层循环元素,内层循环时比较值

值相同时,则删去这个值

注意点:删除元素之后,需要将数组的长度也减1.

Array.prototype.distinct = function (){

 var arr = this,i,j,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;

};

var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

var b = a.distinct();

console.log(b.toString()); //1,2,3,4,5,6,56

优点:简单易懂

缺点:占用内存高,速度慢

 方法三:利用对象的属性不能相同的特点进行去重

Array.prototype.distinct = function (){

 var arr = this,i,obj = {},result = [],len = arr.length;

 for(i = 0; i< arr.length; i++){

 if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了

   obj[arr[i]] = 1;

   result.push(arr[i]);

 }

 }

 return result;

};

var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

var b = a.distinct();

console.log(b.toString()); //1,2,3,4,5,6,56

 

 

 

以上是关于JS实现数组去重方法总结(三种常用方法)的主要内容,如果未能解决你的问题,请参考以下文章

js数组去重的三种常用方法总结

js 数组去重三种方法总结

js 数组去重三种方法总结

js数组去重常用方法

数组的常用方法

js数组去重的两种方法