js数组去重的方法汇总

网络编程 2025-03-31 07:49www.168986.cn编程入门

三种实用方法教你JavaScript数组去重

在JavaScript中,数组去重是一个常见的操作。今天,我将为大家介绍三种简单实用的方法来实现数组去重,有需要的小伙伴可以参照使用。

方法一:利用indexOf判断新数组

这种方法类似于underscore.js中的实现方式。其核心思想是通过遍历原数组,将每个元素与临时数组进行比较。如果当前元素在临时数组中不存在(即indexOf返回-1),则将该元素添加到临时数组中。通过这种方式,我们可以确保只保留唯一的元素。

示例代码如下:

```javascript

function uniqueByNewArray(arr) {

var tmpArr = []; // 临时数组用于存储不重复的元素

for (var i = 0; i < arr.length; i++) {

// 如果当前元素在临时数组中不存在,则添加到临时数组中

if (tmpArrdexOf(arr[i]) === -1) {

tmpArr.push(arr[i]);

}

}

return tmpArr; // 返回去重后的数组

}

```

方法二:利用indexOf判断旧数组

这种方法与前一种方法有所不同。它同样是遍历原数组,但判断逻辑是在旧数组中进行的。如果当前元素在原数组中第一次出现的位置不是当前遍历的位置,那么说明该元素是重复的,可以将其忽略。这样也可以实现数组去重的效果。以下是相应的示例代码:

```javascript

function uniqueByOldArray(arr) {

var tmpArr = []; // 结果数组用于存储去重后的元素

for (var i = 0; i < arr.length; i++) {

// 如果当前元素在原数组中第一次出现的位置不是当前位置i,则忽略该元素(重复元素)

if (arrdexOf(arr[i]) !== i) {

continue; // 跳过重复元素的处理逻辑,继续下一个元素的判断

} else {

tmpArr.push(arr[i]); // 将非重复元素添加到结果数组中

}

}

return tmpArr; // 返回去重后的数组

}

利用哈希表查找去重

在JavaScript中,我们可以利用对象的特性,即其本质上是一个哈希表,来实现数组的去重操作。这是一种高效且简洁的方法。

以下是利用哈希表进行数组去重的函数实现:

```javascript

function uniqueByHash(arr){

var tmpArr = [], hash = {}; //创建一个空的哈希表和临时数组

for(var i=0; i

if(!hash[arr[i]]){ //如果哈希表中没有当前项

hash[arr[i]] = true; //将当前项存入哈希表,表示已存在

tmpArr.push(arr[i]); //同时将该项存入临时数组

}

}

return tmpArr; //返回去重后的数组

}

```

数组扩展方法实现去重

除了上述方法,我们还可以扩展Array对象本身,为其添加去重的方法。这样我们可以更方便地在任何数组上调用这些方法。以下是三种不同的扩展方法实现:

```javascript

//方法1:使用indexOf查找不重复元素

Array.prototype.unique1 = function(){

var tmpArr = [];

for (var i = 0; i < this.length; i++){

if (tmpArrdexOf(this[i]) == -1){ //如果临时数组中不存在当前元素

tmpArr.push(this[i]); //将该元素添加到临时数组

}

}

return tmpArr; //返回去重后的数组

}

//方法2:利用数组自身的indexOf方法判断位置是否相同

Array.prototype.unique2 = function(){

var tmpArr = []; //结果数组

for(var i = 0; i < this.length; i++){

if (thisdexOf(this[i]) == i){ //如果当前元素在数组中的位置与其索引相同,表示它是非重复元素

tmpArr.push(this[i]); //将该元素添加到结果数组

}

}

return tmpArr; //返回去重后的数组

}

//方法3:使用哈希表进行去重,与上述使用哈希表的方法相同,只是集成在Array原型上。

Array.prototype.unique3 = function(){...} //与前面的uniqueByHash函数相同。

```

ES6中的Set数据结构实现去重

在ES6中,Set是一种新的数据结构,它可以存储一组不重复的值。我们可以利用Set的特性来实现数组的去重。创建Set的方式如下:

```javascript

var s = new Set([1, 2, 3, 4, 3]); //创建一个Set,自动去除重复元素

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by