简述Javascript数组怎么去重有哪些?(方法) ?

参考回答

JavaScript 中去重数组的方法有以下几种常见方式:
1. 使用 Set
2. 使用 filter() + indexOf()
3. 使用 reduce() + includes()
4. 使用 for 循环和对象/Map

详细讲解与拓展

  1. 使用 Set
    Set 是一种数据结构,它只允许存储唯一的值,因此使用 Set 可以轻松实现数组去重。

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

    这里,我们通过将数组传入 Set 中,Set 会自动去掉重复的元素,然后使用展开运算符(...)将其转换回数组。

  2. 使用 filter() + indexOf()
    filter() 方法可以通过回调函数筛选出符合条件的元素,indexOf() 用来判断当前元素在数组中第一次出现的位置,如果当前索引与第一次出现的位置一致,就保留该元素。

    const arr = [1, 2, 2, 3, 4, 4];
    const uniqueArr = arr.filter((value, index, self) => self.indexOf(value) === index);
    console.log(uniqueArr); // [1, 2, 3, 4]
    

    filter() 方法会检查每个元素的索引是否是该元素第一次出现的位置,从而实现去重。

  3. 使用 reduce() + includes()
    reduce() 方法可以累加处理数组中的元素,includes() 用来判断当前元素是否已经在累积的数组中,若没有则加入去重数组。

    const arr = [1, 2, 2, 3, 4, 4];
    const uniqueArr = arr.reduce((acc, value) => {
     if (!acc.includes(value)) {
       acc.push(value);
     }
     return acc;
    }, []);
    console.log(uniqueArr); // [1, 2, 3, 4]
    

    在此方法中,reduce() 逐个处理数组元素,将不重复的元素添加到结果数组 acc 中。

  4. 使用 for 循环和对象/Map
    通过 for 循环遍历数组,将每个元素作为对象的属性或 Map 的键来确保元素唯一性。对象的键是唯一的,因此可以用来去重。

    const arr = [1, 2, 2, 3, 4, 4];
    const uniqueArr = [];
    const seen = {};
    for (let i = 0; i < arr.length; i++) {
     if (!seen[arr[i]]) {
       uniqueArr.push(arr[i]);
       seen[arr[i]] = true;
     }
    }
    console.log(uniqueArr); // [1, 2, 3, 4]
    

    通过 seen 对象来记录出现过的元素,确保每个元素只添加一次。

总结

JavaScript 中去重数组的常见方法包括使用 Setfilter() 配合 indexOf()reduce() 配合 includes(),以及 for 循环结合对象/Map。这些方法都可以有效地去除数组中的重复元素,但在性能和适用场景上可能会有所不同。

发表评论

后才能评论