JavaScript数组去重的三种实现方式及类型差异分析
作者:拾光时间:2026-10-30 05:38:11浏览:437
本文介绍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中数组去重的三种方法,希望能为读者提供实际帮助。
作者最新文章
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
