admin 管理员组文章数量: 887629
2024年1月12日发(作者:二郎山好玩吗)
JS数组去重的方法及原理(全)
JavaScript中数组去重的方法有多种,可以分为传统方法和现代方法。
传统方法:
1. 使用双层循环:外层循环遍历数组的每个元素,内层循环从外层循环的当前元素开始,往后遍历,如果找到相同的元素,则使用splice(方法删除该元素。这种方法的缺点是效率较低,时间复杂度为O(n^2)。
```javascript
function unique(arr)
for(let i=0; i<; i++)
for(let j=i+1; j<; j++)
if(arr[i] === arr[j])
(j, 1);
j--;
}
}
}
return arr;
```
2. 使用indexOf(方法:遍历数组的每个元素,使用indexOf(方法判断该元素是否已经存在于一个新的数组中,如果不存在,则将该元素添加到新数组中。这种方法的时间复杂度依然为O(n^2)。
```javascript
function unique(arr)
let result = [];
for(let i=0; i<; i++)
if(f(arr[i]) === -1)
(arr[i]);
}
}
return result;
```
3. 使用includes(方法:与indexOf(方法类似,遍历数组的每个元素,使用includes(方法判断该元素是否已经存在于一个新的数组中,如果不存在,则将该元素添加到新数组中。这种方法与indexOf(方法相比,不需要返回索引值,所以效率稍高一些,时间复杂度仍为O(n^2)。
```javascript
function unique(arr)
let result = [];
for(let i=0; i<; i++)
if(!es(arr[i]))
(arr[i]);
}
}
return result;
```
现代方法:
4. 使用Set:ES6中引入了Set数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们可以通过将数组转换为Set来实现数组去重。
```javascript
function unique(arr)
return (new Set(arr));
```
或者使用扩展运算符(...):
```javascript
function unique(arr)
return [...new Set(arr)];
```
5. 使用Map:通过Map数据结构也可以实现数组去重的效果。遍历数组的每个元素,将元素作为键和值存储到Map中,由于Map中不允许重复的键,所以重复元素自然会被去重。
```javascript
function unique(arr)
let map = new Map(;
let result = [];
for(let i=0; i<; i++)if(!(arr[i]))
(arr[i], true);
(arr[i]);
}
}
return result;
```
以上是常用的一些数组去重的方法,其中现代方法使用据结构可以更简洁高效地实现数组去重,时间复杂度为Set或Map数O(n)。
版权声明:本文标题:JS数组去重的方法及原理(全) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705004818h469365.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论