本文介绍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中数组去重的三种方法,希望能为读者提供实际帮助。