码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-10-19 22:00:08      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:[]   height   result   返回   sof   ++   i++   func   ffffff   

方法一:

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

如果有相同的值则跳过,不相同则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实现数组去重方法总结(三种常用方法)

标签:[]   height   result   返回   sof   ++   i++   func   ffffff   

原文地址:https://www.cnblogs.com/NatChen/p/9818705.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!