什么是JS数组去重
JavaScript中的数组是一个有序的集合,其中包含着零个或多个元素。在实际开发中,经常会遇到需要对数组进行去重的情况。去重就是将数组中重复的元素只保留一个,从而使数组中的元素唯一。
方法1:使用Set数据结构
JavaScript中的Set对象是一种能够存储不同值的集合类数据结构。由于Set对象不允许出现重复的值,因此可以通过将数组转换成Set对象来进行去重。代码如下:
var arr = [1, 2, 2, 3, 4, 4, 5];
var newArr = Array.from(new Set(arr));
console.log(newArr); // [1, 2, 3, 4, 5]
方法2:使用reduce方法
使用reduce方法可以对数组中每个值进行处理,并将处理结果累加到一个新的数组中。代码如下:
var arr = [1, 2, 2, 3, 4, 4, 5];
var newArr = arr.reduce(function (prev, cur) {
if (prev.indexOf(cur) === -1) prev.push(cur);
return prev;
}, []);
console.log(newArr); // [1, 2, 3, 4, 5]
方法3:使用for循环和indexOf方法
对于较小的数组可以使用for循环和indexOf方法进行去重。例如:
var arr = [1, 2, 2, 3, 4, 4, 5];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr); // [1, 2, 3, 4, 5]
方法4:使用Map数据结构
Map数据结构是一种支持键值对的集合类型,可以用来对数组进行去重。代码如下:
var arr = [1, 2, 2, 3, 4, 4, 5];
var newArr = [];
var map = new Map();
for (var i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], true);
newArr.push(arr[i]);
}
}
console.log(newArr); // [1, 2, 3, 4, 5]
方法5:使用filter方法
使用filter方法可以对数组中的每个元素进行判断,返回一个新的数组。代码如下:
var arr = [1, 2, 2, 3, 4, 4, 5];
var newArr = arr.filter(function (item, index, arr) {
return arr.indexOf(item) === index;
});
console.log(newArr); // [1, 2, 3, 4, 5]
方法6:使用递归
使用递归可以直接对原数组进行去重。代码如下:
var arr = [1, 2, 2, 3, 4, 4, 5];
function unique(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
return unique(arr);
}
}
}
return arr;
}
var newArr = unique(arr);
console.log(newArr); // [1, 2, 3, 4, 5]
总结
在对数组进行去重时,我们可以使用多种方法来达到相同的效果。对于小规模的数组,使用for循环和indexOf方法或者使用filter方法都是不错的选择。对于大规模的数组,我们可以使用Set数据结构或者reduce方法来进行去重。如果希望对原数组进行直接操作,则可以使用递归的方法。
为你推荐
- 2023-07-12js 字符拼接(JavaScript字符串合并方法解析)
- 2023-07-28js创建dom(使用JavaScript动态生成页面元素)
- 2023-07-09js的join(JavaScript数组合并函数Join的应用)
- 2023-08-08js sqllite(JS操作SQLite数据库,实现高效数据管理)
- 2023-09-23js深度拷贝(JavaScript对象的深度复制)
- 2023-07-11js获取元素的高度(使用JS获取元素高度)
- 2023-07-29js yield(JS生成器函数的Yield用法)
- 2023-09-17js 延迟(JavaScript延迟函数的实现)