JavaScript数组去重的三种实现方式及类型差异分析

作者:拾光

时间:2026-10-30

浏览:436

本文介绍JavaScript中数组去重的三种常见实现。前两种方法在去重过程中保持原始数据类型不变,适合需要保留数字类型的场景;第三种方法利用对象键特性实现去重,但会将所有元素转换为字符串类型。文章通过具体代码示例对比了各方法的执行逻辑与结果差异,帮助开发者根据实际需求选择合适方案。

文章目录

JavaScript数组去重方法概述

接下来将具体展示几种实现方案。

第一种方案:返回的新数组中,每个位置的数据类型保持与原数组一致。

保持类型的第一种去重方案


function outRepeat(a){
      var hash=[],arr=[];
      for (var i = 0; i < a.length; i++) {
        hash[a[i]]!=null;
        if(!hash[a[i]]){
          arr.push(a[i]);
          hash[a[i]]=true;
        }
      }
      console.log(arr);
    }
    outRepeat([2,4,4,5,"a","a"]);//[2, 4, 5, "a"] 

第二种方案:逻辑与第一种类似,但作者认为第一种方案更易于理解。

逻辑相似的第二种方案


function outRepeat(a){
      var hash=[],arr=[];
      for (var i = 0,elem;(elem=a[i])!=null; i++) {
        if(!hash[elem]){
          arr.push(elem);
          hash[elem]=true;
        }
      }
      console.log(arr);
    }
    outRepeat([2,4,4,5,"a","a"]);//[2, 4, 5, "a"] 

第三种方案:虽然逻辑上更直观,但返回的新数组中,原本为number类型的元素会被转换为string类型,在关键场景下需要注意类型处理。

涉及类型转换的第三种方案


function outRepeat(a){
      var hash=[],arr=[];
      for (var i = 0; i < a.length; i++) {
        hash[a[i]]=null;
      }
      for(var key in hash){
          arr.push(key);        
        }
      console.log(arr);
    }
    outRepeat([2,4,4,5,"a","a"]);//["2", "4", "5", "a"]

以上介绍了JavaScript中数组去重的三种方法,希望能为读者提供实际帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章