JavaScript数组去重:从基础遍历到哈希表优化方案
作者:代码拾荒时间:2026-10-30 12:08:55浏览:643
本文介绍JavaScript中去除数组重复数据的方法。首先展示基础的双重循环实现,指出其效率问题。随后重点讲解利用对象属性作为哈希表记录已存在元素的优化方案,通过单次遍历实现高效去重,并提供完整代码示例供参考。
JavaScript数组去重基础实现
无需多言,以下是JavaScript数组去除重复数据的基础实现代码。
var arr = [1,2,3,4,5,6,1,6,7,2];
var newArr = [];
for(var i =0;i<arr.length-1;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}

基于哈希表的高效去重方案
接下来分享一种更高效的JavaScript数组去重方法。
JavaScript的Array类型原生并未提供直接去重的方法,若需剔除数组中的重复元素,必须手动实现逻辑。
function unique(arr) {
var result = [], isRepeated;
for (var i = 0, len = arr.length; i < len; i++) {
isRepeated = false;
for (var j = 0, len = result.length; j < len; j++) {
if (arr[i] == result[j]) {
isRepeated = true;
break;
}
}
if (!isRepeated) {
result.push(arr[i]);
}
}
return result;
}
基本思路是将原数组元素逐个复制到新数组,并在复制前检查该元素是否已存在,若存在则丢弃。这种基于嵌套循环的方法效率较低。我们可以利用类似哈希表的结构来记录已出现的元素,从而避免内层循环。在JavaScript中,利用对象属性实现哈希表非常简单,改进后的代码如下:
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
//http://www.cnblogs.com/sosoft/
}
以上介绍了JavaScript数组去重仅保留一条记录的两种实现方式,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢支持本站。
作者最新文章
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
JavaScript函数定义的三种方式:声明、表达式与箭头函数
2026-11-05 13:50:55
JavaScript中escape、encodeURI和encodeURIComponent对空格的处理差异
2026-11-05 12:47:23
