首页 > 代码编程 > 前端开发 > js 数组 删除(JavaScript数组去重)

js 数组 删除(JavaScript数组去重)

2023-07-01 前端开发 29 ℃ 0 评论

什么是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方法来进行去重。如果希望对原数组进行直接操作,则可以使用递归的方法。

炮渣日记