JavaScript数组去重六种实现方案详解

作者:代码拾荒时间:2026-10-30 14:57:42浏览:562

本文系统总结了JavaScript中数组去重的六种常见实现方式。涵盖利用对象属性、双层循环、递归排序、indexOf结合forEach、ES6 Set以及展开运算符等技巧。每种方法均附带代码示例与原理分析,帮助开发者根据性能需求与兼容性要求选择最优方案。

前言

前言

JavaScript数组去重背景

在JavaScript开发过程中,处理数组元素重复是常见需求。由于原生Array对象未直接提供去重方法,开发者需自行实现相关逻辑。本文汇总了多种JavaScript数组去重方案,供读者参考。

方法一:利用对象属性不重复特性

方法一:利用对象属性不重复特性

对象属性去重代码实现


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;
};

方法二:双层循环对比值

方法二:双层循环对比值

双层循环去重代码实现


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;
}

方法三:数组递归去重

方法三:数组递归去重

递归排序去重代码实现


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

方法四:利用indexOf及forEach

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

方法五:利用ES6的Set

ES6 Set去重代码实现


function dedupe(array){
  return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]

方法六:使用拓展运算符配合for...of循环

方法六:使用拓展运算符配合for...of循环

拓展运算符去重代码实现


let arr = [3,5,2,2,5,5];
let unique = [...new Set(arr)];  //[3,5,2]

总结

总结

结语

以上即为文章全部内容。个人倾向于使用方法一,因其不修改原数组。希望本文能为您提供帮助,如有疑问欢迎留言交流。

作者最新文章