JavaScript常见的五种数组去重的方式

网络编程 2025-03-28 18:13www.168986.cn编程入门

JavaScript数组去重:五种常见思路分析与实例介绍

在JavaScript的世界中,数组去重问题可谓是一道经典难题,常常出现在各种面试中。今天,我们就来详细五种常见的数组去重方法,并通过实例介绍,帮助大家深入理解并学习。

一、建立基础数组

我们先创建一个包含各种数据类型的数组:

var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN];

二、第一种思路及代码实现

思路:建立一个临时数组,利用for循环遍历原数组,依次判断每个元素是否已存在于临时数组中。若不存在,则添加到临时数组;若已存在,则跳过。最后返回临时数组。

代码实现:

Array.prototype.removeDuplicate = function(){

var n = []; // 初始化临时数组

for(var i=0; i

if(ndexOf(this[i]) == -1){ // 判断元素是否已存在于临时数组中

n.push(this[i]); // 若不存在,则添加到临时数组

}

}

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

}

var m = arr.removeDuplicate(); // 执行去重操作

console.log(m); // 输出结果:[1, 2, 3, "我", 34, "我的", NaN, NaN](注意:不会去掉重复的NaN值)

三、第二种思路及代码实现

思路:同样建立一个临时数组,但利用for循环和indexOf()方法判断原数组中每个元素第一次出现的位置。若元素第一次出现的位置即为当前位置,则表明之前不存在相同的值,将其添加到临时数组中;否则不添加。最后返回临时数组。

代码实现:与第一种方法类似,只是在判断条件上有所不同。注意:这种方法会将NaN值删除。

四、第三种思路及概述

在编程中,去除数组中的重复元素是一个常见的任务。针对这一需求,有多种方法可以实现。以下是其中三种不同的思路及其对应的代码实现。

第一种方法:使用对象作为查找表

思路是遍历数组,利用对象作为查找表,将遇到的元素作为对象的属性,并将其值设置为`true`。这样,如果有重复元素,它的属性就会被忽略。将对象的所有属性(即不重复的元素)添加到新的数组中并返回。

代码实现如下:

```javascript

Array.prototype.removeDuplicates = function() {

var uniqueArray = [];

var lookup = {};

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

if (!lookup[this[i]]) { // 如果当前元素尚未作为属性添加到lookup对象中

lookup[this[i]] = true; // 将元素作为属性添加到lookup对象中

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

}

}

return uniqueArray; // 返回结果数组

};

var arr = [1, 2, 3, "我", 34, "我的", NaN]; // 假设这是原始数组

console.log(arr.removeDuplicates()); // 输出结果:[1, 2, 3, "我", 34, "我的", NaN]

```

第二种方法:排序后比较

这种方法首先对数组进行排序,然后逐个比较相邻的元素。如果它们不相等,则将该元素添加到结果数组中。最终返回结果数组。值得注意的是,这种方法不会删除重复的`NaN`值。

代码实现如下:

```javascript

Array.prototype.removeDuplicates = function() {

var uniqueArray = []; // 结果数组初始化为空数组

this.sort(); // 对数组进行排序处理(如果数组已排序可省略此步骤)

for (var i = 0; i < this.length; i++) { // 遍历数组中的每个元素

if (this[i] !== this[i + 1]) { // 如果当前元素与下一个元素不相等(考虑到NaN的特殊性质)则添加到结果数组中

uniqueArray.push(this[i]); // 将当前元素添加到结果数组中(注意这里不处理NaN)

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