JavaScript常见的五种数组去重的方式
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)
编程语言
- JavaScript常见的五种数组去重的方式
- 在JSTL EL中处理java.util.Map,及嵌套List的情况
- 利用transition实现文字上下抖动的效果
- jQuery实现对无序列表的排序功能(附demo源码下载
- asp.net 全部选中与取消操作,选中后的删除(ajax)实
- Yii2使用Bootbox插件实现自定义弹窗
- 浅析JS中回调函数及用法
- javascript html5摇一摇功能的实现
- PHP+MYSQL实现读写分离简单实战
- thinkphp微信开发(消息加密解密)
- jQuery实现带有动画效果的回到顶部和底部代码
- 更高效的使用JQuery 这里总结了8个小技巧
- String.indexOf 方法介绍
- javascript 中模板方法单例的实现方法
- 使用php判断网页是否gzip压缩
- PHP标准库 (SPL)——Countable用法示例