前端实现数组的去重

1.前端实现数组的去重 的区别

  1. 使用 Set 数据结构(ES6)

这种方法使用了 ES6 中引入的 Set 数据结构,Set 实例可以自动过滤重复元素。使用这种方法去重非常简单,只需要将数组转换成 Set 实例,然后再转换回数组即可。这种方法的优点是代码简洁,容易理解,而且性能也很不错。

  1. 使用 filter 方法和 indexOf

这种方法利用了数组的 filter 方法和 indexOf 方法,遍历数组并返回一个新数组,新数组中只包含没有重复的元素。这种方法的缺点是效率较低,时间复杂度为 O(n^2),适用于小型数组。

  1. 使用 reduce 方法

这种方法使用了数组的 reduce 方法,遍历数组并返回一个新数组,新数组中只包含没有重复的元素。这种方法的缺点也是效率较低,时间复杂度为 O(n^2),适用于小型数组。

  1. 使用 Map 数据结构

这种方法使用了 ES6 中引入的 Map 数据结构,Map 实例可以自动过滤重复元素。使用这种方法去重需要额外创建一个 Map 对象,然后遍历数组并通过 Map 实例判断数组元素是否已经存在这种方法的优点是代码简单,性能较好,适用于大型数组。

      综上所述,使用 Set 或 Map 数据结构实现数组去重相对于使用 filter 和 reduce 方法效率更高,但是这些方法需要浏览器支持 ES6。因此,在实际开发中,需要根据不同的情况进行选择。

1.使用 Set 数据结构(ES6):
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]


2.使用 filter 方法和 indexOf:

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


3.使用 reduce 方法:
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((prev, curr) => {
  if (!prev.includes(curr)) {
    prev.push(curr);
  }
  return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]


使用 Map 数据结构:

const arr = [1, 2, 2, 3, 4, 4, 5];
const map = new Map();
const uniqueArr = [];
for (const item of arr) {
  if (!map.has(item)) {
    map.set(item, true);
    uniqueArr.push(item);
  }
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

 

相关推荐

  1. 前端实现

    2024-02-05 14:42:02       33 阅读
  2. 实现数组方式

    2024-02-05 14:42:02       37 阅读
  3. 实现一个批量解压缩并功能

    2024-02-05 14:42:02       54 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 14:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 14:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 14:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 14:42:02       20 阅读

热门阅读

  1. 排序刷题3

    2024-02-05 14:42:02       32 阅读
  2. 【Ubuntu】安装filebeat

    2024-02-05 14:42:02       31 阅读
  3. ubuntu 安装 ffmpeg 6.0

    2024-02-05 14:42:02       36 阅读
  4. 蓝桥杯典型真题分析详解--编程思维--日期统计

    2024-02-05 14:42:02       28 阅读
  5. ASR 概述

    2024-02-05 14:42:02       31 阅读
  6. SQL--DDL

    SQL--DDL

    2024-02-05 14:42:02      27 阅读
  7. MySQL的DDL语言

    2024-02-05 14:42:02       35 阅读
  8. Leetcode 3026. Maximum Good Subarray Sum

    2024-02-05 14:42:02       35 阅读
  9. 网易和腾讯面试题精选---API 设计和开发面试问答

    2024-02-05 14:42:02       26 阅读
  10. 面试经典题---76.最小覆盖子串

    2024-02-05 14:42:02       25 阅读