关键词

数组去重

如何对数组进行去重?

在程序开发中,经常会遇到需要对一个数组进行去重的情况。既然要去重,那么就意味着要将数组中的重复元素删除,解决这个问题的核心问题就是如何判断两个元素是否相同。

下面介绍几种常见的数组去重方法:

使用Set

利用ES6中新增的数据结构Set,可以方便地实现数组去重。

const arr = [1, 2, 3, 2, 1];
const newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3]

上述代码中,创建了一个包含重复元素的数组arr,通过扩展运算符(...)和Set数据结构,得到了一个新的数组newArr,其中所有重复元素都被去除了。

使用Map

如果要对一个对象数组或字符串数组进行去重,可以使用Map来实现。

function unique(arr) {
    const map = new Map();
    return arr.filter(item => !map.has(item) && map.set(item, true));
}

const arr1 = [{name: '张三', age: 20}, {name: '李四', age: 25}, {name: '张三', age: 20}];
const arr2 = ['apple', 'banana', 'orange', 'banana'];

console.log(unique(arr1)); // [{name: '张三', age: 20}, {name: '李四', age: 25}]
console.log(unique(arr2)); // ['apple', 'banana', 'orange']

上述代码中,定义了一个名为unique的函数,该函数接收一个数组作为参数,使用Map数据结构实现去重,并返回一个新的数组。当Map对象中不存在当前元素时,就把该元素添加到Map中,并返回true,否则返回false。

使用indexOf

如果要对一个数字或字符串数组进行去重,可以使用indexOf方法来实现。

function unique(arr) {
    const newArr = [];
    arr.forEach(item => {
        if (newArr.indexOf(item) === -1) {
            newArr.push(item);
        }
    });
    return newArr;
}

const arr1 = [1, 2, 3, 2, 1];
const arr2 = ['apple', 'banana', 'orange', 'banana'];

console.log(unique(arr1)); // [1, 2, 3]
console.log(unique(arr2)); // ['apple', 'banana', 'orange']

上述代码中,定义了一个名为unique的函数,该函数接收一个数组作为参数,使用indexOf方法实现去重,并返回一个新的数组。当新数组中不存在当前元素时,就把该元素添加到新数组中。

以上三种方法均可用于对数组进行去重。在实际开发中,根据具体情况选择合适的方法即可。

本文链接:http://task.lmcjl.com/news/2707.html

展开阅读全文