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数组去重方法。

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数组去重仅保留一条记录的两种实现方式,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢支持本站。

作者最新文章