12
2020
04

写一个数组去重的方法?

答:a、利用对象属性


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());


b、indexof


Array.prototype.distinct = function (){


 var arr = this,


  result = [],


  len = arr.length;


 arr.forEach(function(v, i ,arr){  //这里利用map,filter方法也可以实现


  var bool = arr.indexOf(v,i+1);  //从传入参数的下一个索引值开始寻找是否存在重复


  if(bool === -1){


   result.push(v);


  }


 })


 return result;


};


var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];


var b = a.distinct();


console.log(b.toString());


C、es6:let resultarr = [...new Set(arr)];


 


 

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。