数组操作

数组去重

利用对象的属性不能相同的特点进行去重
Array.prototype.distinct = function (){
  var [arr, i, obj, result, len] = [this, null, {}, [], arr.length];
  for(i=0; i
数组递归去重

先排序,然后从最后开始比较,遇到相同,则删除

Array.prototype.distinct = function (){
  var arr = this,
  len = arr.length;
  arr.sort(function(a,b){  //对数组进行排序才能方便比较
    return a - b;
   })
  function loop(index){
    if(index >= 1){
      if(arr[index] === arr[index-1]){
       arr.splice(index,1);
      }
      loop(index - 1); //递归loop函数进行去重
    }
   }
   loop(len-1);
   return arr;
};

利用indexOf以及forEach

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;
};
利用ES6的set

Set数据结构,其成员的值都是唯一的

  • 利用Array.from将Set结构转化成数组
Array.from(new Set(array))
  • 拓展运算符(...)内部使用for...of循环
[...new Set(array)]

你可能感兴趣的:(数组操作)