JS数组去重方法总结:indexOf, lastIndexOf, filter
55 浏览量
更新于2024-08-28
收藏 78KB PDF 举报
"这篇资源是作者在大学四年的学习中总结的JavaScript数组去重方法,适合面试准备。文章提到了一些基础的JS数组知识,并推荐了相关参考资料,然后详细介绍了三种常用的去重方法:indexOf、lastIndexOf和filter与indexOf的组合使用。"
在JavaScript中,数组去重是一个常见的需求,尤其在处理数据清洗或优化数据结构时。这里作者分享了三种实用的方法:
1. 使用indexOf()方法去重
`indexOf()`方法查找数组中指定元素的首次出现位置,如果不存在则返回-1。基于此,我们可以遍历数组,对于每个元素,如果它不在新数组的新建副本`newArr`中,就将其添加到`newArr`。这种方法效率较低,因为每次检查都需要遍历整个新数组。
示例代码:
```javascript
var arr = [1, 1, 2, 2, 3, 3, 4, 4];
var newArr = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr); // 输出:[1, 2, 3, 4]
```
2. 使用lastIndexOf()方法去重
`lastIndexOf()`方法类似于`indexOf()`,但它从数组末尾开始查找。这使得在某些情况下,如果数组中有重复元素,它可以帮助我们保留最后一个元素。同样,这种方法也需要遍历整个数组。
示例代码:
```javascript
function noRepeat(arr) {
var res = [];
for (var i = 0; i < arr.length; i++) {
if (res.lastIndexOf(arr[i]) === -1) {
res.push(arr[i]);
}
}
return res;
}
console.log(noRepeat([1, 1, 2, 2, 3, 3, 4, 4])); // 输出:[4, 3, 2, 1]
```
3. 使用filter()与indexOf()结合去重
`filter()`方法创建一个新的数组,其中包含通过所提供函数实现的测试的所有元素。将`indexOf()`作为过滤条件,如果元素在新数组中不存在,那么将元素添加到结果中。
示例代码:
```javascript
function uniqueByFilter(arr) {
return arr.filter(function(item, index) {
return arr.indexOf(item, 0) === index;
});
}
console.log(uniqueByFilter([1, 1, 2, 2, 3, 3, 4, 4])); // 输出:[1, 2, 3, 4]
```
以上是JavaScript中数组去重的几种基本方法。除此之外,随着ES6的引入,`Set`结构成为更简洁的去重工具,因为它不允许重复元素。例如:
```javascript
let uniqueArr = [...new Set([1, 1, 2, 2, 3, 3, 4, 4])]; // 输出:[1, 2, 3, 4]
```
了解并熟练掌握这些方法对于JS开发者来说至关重要,特别是在面试中,能够体现出对数据结构和算法的理解程度。
8714 浏览量
373 浏览量
2024-01-03 上传
391 浏览量
144 浏览量
190 浏览量
2020-12-09 上传
127 浏览量
211 浏览量

weixin_38659955
- 粉丝: 4
最新资源
- 多技术领域源码集锦:园林绿化官网企业项目
- 定制特色井字游戏Tic Tac Toe开源发布
- TechNowHorse:Python 3编写的跨平台RAT生成器
- VB.NET实现程序自动更新的模块设计与应用
- ImportREC:强大输入表修复工具的介绍
- 高效处理文件名后缀:脚本批量添加与移除教程
- 乐phone 3GW100体验版ROM深度解析与优化
- Rust打造的cursive_table_view终端UI组件
- 安装Oracle必备组件libaio-devel-0.3.105-2下载
- 探索认知语言连接AI的开源实践
- 微软SAPI5.4实现的TTSApp语音合成软件教程
- 双侧布局日历与时间显示技术解析
- Vue与Echarts结合实现H5数据可视化
- KataSuperHeroesKotlin:提升Android开发者的Kotlin UI测试技能
- 正方安卓成绩查询系统:轻松获取课程与成绩
- 微信小程序在保险行业的应用设计与开发资源包