JavaScript数组去重方法总结:ES5、排序与对象存储

4 下载量 174 浏览量 更新于2023-05-11 收藏 49KB PDF 举报
本文是一篇关于JavaScript数组去重的实用指南,总结了三种不同的方法来处理重复元素,以便于开发人员根据项目需求选择最适合的方法。以下是详细解释: 1. for循环 + indexOf 方法: 这种方法利用`Array.prototype.indexOf()`函数来检查元素是否已经在目标数组中。如果元素不存在,就将其添加到新的`uniqueArr`中。代码中定义了一个名为`unique`的函数,接受一个数组`arr`作为输入,遍历并检查每个元素,只有当它在`uniqueArr`中不存在时才添加。这种方法适用于简单的数组去重,但性能可能不理想,因为每次调用`indexOf`都需要搜索整个数组。 示例: ```javascript var arr = [1, 2, 3, 1, 5, "1"]; var uniqueArr = unique(arr); ``` 2. 排序后去重: 通过先将数组排序(这里使用`concat().sort()`),然后逐个检查相邻元素是否相同,只添加不同的元素。这种方法基于数组元素的自然顺序,如果元素值相等且类型不同,则会被视为不同。最后得到的`uniqueArr`会按照排序后的顺序排列。 示例: ```javascript var arr = [1, 2, 3, 1, 5, "1"]; var uniqueArr = unique(arr); ``` 3. 利用对象: 利用JavaScript对象的键值特性,对象的键是唯一的。将数组元素作为键值对存入对象,最后再从对象中提取键(即唯一值)。这种方法适用于数组元素类型各异的情况,因为对象的键由字符串表示,所以即使两个数字或字符串相等,它们在对象中的键也会不同。 示例: ```javascript var arr = [1, 2, 3, 1, 5, "1"]; var uniqueArr = unique(arr); ``` 每种方法都有其适用场景和性能特点,选择哪种取决于项目需求、性能敏感性以及数组元素的具体性质。理解这些技巧有助于提高代码质量和效率。在实际应用中,还可以考虑使用ES6的新特性,如Set或Map数据结构,它们天生就支持去重,简化了代码编写。