You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何从数组获取唯一值 数组去重实现方案求助

JavaScript数组提取唯一值最优实现方案

针对给出的测试数组,最简洁且性能最优的现代实现方案基于ES6原生Set数据结构,Set本身设计为存储唯一值的集合,不需要手写遍历判断逻辑,补全后的代码如下:

var myArray = ['a', 1, 'a', 2, '1'];
// 写法1:展开运算符
var unique = [...new Set(myArray)];
// 写法2:Array.from 转换,和写法1效果完全一致
var unique = Array.from(new Set(myArray));
// 运行后unique的值为 ['a', 1, 2, '1']

方案特性

  • 语义清晰代码量小,属于目前JS生态里数组去重的公认标准写法
  • 性能优异,底层基于哈希表实现,处理大长度数组时的耗时远低于传统循环对比方案
  • 严格遵循===严格相等判断规则,会将数字1和字符串'1'识别为不同值,符合常规业务去重预期

如果需要兼容不支持ES6的老旧运行环境(如IE11及更早版本),可以使用filter配合indexOf的兼容写法:

var myArray = ['a', 1, 'a', 2, '1'];
var unique = myArray.filter(function(item, index, arr) {
  // 仅保留元素第一次出现位置匹配当前索引的项,过滤后续重复值
  return arr.indexOf(item) === index;
});

注意:如果业务场景需要忽略类型差异做去重(比如将数字1和字符串'1'判定为重复值),不要直接使用宽松相等==做判断,建议先统一所有元素的类型后再执行去重逻辑,避免隐式类型转换引入非预期bug。

内容的提问来源于stack exchange,提问作者Nancie L Beckett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:36:23