JavaScript 数组去重详解

yizhihongxing

JavaScript 数组去重详解

在编写 JavaScript 代码时,经常需要对数组进行去重,以方便后续的操作和处理。本文将详细讲解 JavaScript 数组去重的方法,包括使用 ES6 Set、使用 filter 和 forEach 等方法。

使用 ES6 Set

ES6 中的 Set 是一种新的数据结构,可以用来去重。Set 中存储的值都是唯一的,如果尝试向 Set 中添加相同的值,则不会生效。因此,可以使用 Set 来对数组进行去重操作。

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

上面代码中,首先定义了一个包含重复元素的数组,然后通过扩展运算符和 Set 构造函数实例化一个 Set,再将其转换成数组。

使用 filter 和 forEach

除了使用 Set,还可以使用 filter 和 forEach 方法进行数组去重。其中,filter 方法用于过滤数组中的重复元素,而 forEach 方法用于对去重后的数组进行操作。

let arr = [1, 2, 2, 3, 3, 4, 5];
let uniqueArr = [];
arr.filter(function(item) {
  if (uniqueArr.indexOf(item) === -1) {
    uniqueArr.push(item);
  }
});
uniqueArr.forEach(function(item) {
  console.log(item);
});

上面代码中,首先定义了一个包含重复元素的数组,然后通过 filter 方法对数组进行去重操作,使用 indexOf 判断元素是否已存在于新数组,然后使用 push 添加不存在的元素。接着,使用 forEach 方法遍历去重后的数组,并输出每个元素的值。

示例说明

下面将结合两个示例,详细说明使用以上两种方式进行数组去重的方法。

示例一

let arr = [1, 2, 2, 3, 3, 4, 5];
let uniqueArr1 = [...new Set(arr)];
let uniqueArr2 = [];
arr.filter(function(item) {
  if (uniqueArr2.indexOf(item) === -1) {
    uniqueArr2.push(item);
  }
});
console.log(uniqueArr1); // [1, 2, 3, 4, 5]
console.log(uniqueArr2); // [1, 2, 3, 4, 5]

上面代码中,定义了一个包含重复元素的数组 arr,然后分别使用 ES6 中的 Set 和 filter 和 forEach 完成去重操作,并将结果存储在 uniqueArr1 和 uniqueArr2 变量中。最后,通过 console.log 输出去重后的数组。

示例二

let arr = [
  {id: 1, name: "Amy"},
  {id: 2, name: "Bob"},
  {id: 2, name: "Bob"},
  {id: 3, name: "Cat"},
  {id: 3, name: "Cat"},
  {id: 4, name: "Dave"},
  {id: 5, name: "Eric"}
];
let uniqueArr1 = [];
let uniqueArr2 = [];
arr.filter(function(item) {
  let exist = uniqueArr1.find(function(uItem) {
    return uItem.id === item.id;
  });
  if (!exist) {
    uniqueArr1.push(item);
  }
  if (uniqueArr2.indexOf(item.id) === -1) {
    uniqueArr2.push(item.id);
  }
});
console.log(uniqueArr1);
/*
[
  {id: 1, name: "Amy"},
  {id: 2, name: "Bob"},
  {id: 3, name: "Cat"},
  {id: 4, name: "Dave"},
  {id: 5, name: "Eric"}
]
*/
console.log(uniqueArr2); // [1, 2, 3, 4, 5]

上面代码中,定义了一个包含对象的数组 arr,由于对象无法使用 Set 和 indexOf 进行去重操作,因此采用了不同的方法。首先定义两个空数组 uniqueArr1 和 uniqueArr2,使用 filter 方法对数组进行去重操作,对 uniqueArr1 使用 find 方法取出已存在的对象,如果对象不存在,则将其添加到新数组中;对 uniqueArr2 使用 indexOf 判断元素是否已存在于新数组,然后使用 push 添加不存在的元素。最后,通过 console.log 输出去重后的数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 数组去重详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • matlab中边缘提取方法简析

    当然,我可以为您提供有关“matlab中边缘提取方法简析”的完整攻略,以下是详细说明: matlab中边缘提取方法简析 边缘提取是图像处理中的一项重要任务,它可以用于测图像中的物体边缘和轮廓。在matlab中,有多种边缘提取方法可供选择,包括Sobel算子、Prewitt算子、Canny算子等。下面是对这些方法的简要分析: Sobel算子 Sobel算子是一…

    other 2023年5月7日
    00
  • 聊聊java中引用数据类型有哪些

    聊聊Java中引用数据类型有哪些 Java中有两种数据类型:基本数据类型和引用数据类型。基本数据类型直接存储数据本身的值,而引用数据类型存储的是对象的引用,即对象在内存中的地址。 Java中的引用数据类型包括: 对象(Object): Java中最基本的引用数据类型,除了基本数据类型外,Java中的所有数据类型都是以对象的形式出现。 Object obj =…

    other 2023年6月27日
    00
  • MySQL存储过程中变量的定义以及应用详解

    MySQL存储过程中变量的定义以及应用详解 MySQL存储过程是一种在数据库中存储和执行的一组SQL语句的集合。在存储过程中,我们可以使用变量来存储和操作数据。本攻略将详细讲解MySQL存储过程中变量的定义和应用。 变量的定义 在MySQL存储过程中,我们可以使用DECLARE语句来定义变量。DECLARE语句的语法如下: DECLARE variable_…

    other 2023年8月8日
    00
  • js中constructor的作用

    以下是关于JavaScript中constructor的作用的完整攻略,包括基本介绍、实现步骤、示例说明等内容。 1. 基本介绍 在JavaScript中,constructor是一个特殊的方法,用于创建和初始化一个对象。当我们使用new关键字创建对象时,JavaScript会自动调用对象的constructor方法。constructor方法通常用于设置对…

    other 2023年5月10日
    00
  • DR.COM宽带认证客户端安装教程

    DR.COM宽带认证客户端安装教程 一、前言 DR.COM是一家提供网络认证服务的公司,它的宽带认证客户端是一个Windows系统下的软件,用于校园网、公共WIFI等场所认证登陆使用。本篇教程主要介绍DR.COM宽带认证客户端的安装过程。 二、安装步骤 在DR.COM官网下载客户端安装程序,安装程序的名称为DRComClient.exe。下载链接为:http…

    other 2023年6月25日
    00
  • Dreamweaver站点中新建文件夹和修改/删除/移动文件的操作方法

    下面是详细讲解Dreamweaver站点中新建文件夹和修改、删除、移动文件的操作方法。 新建文件夹 打开Dreamweaver软件,打开你创建的站点,确保“文件”窗口处于打开状态。 在“文件”窗口中找到你要新建文件夹的目录,右键单击并选择“新建文件夹”选项。 在弹出的对话框中输入文件夹名称,并选择你的文件夹创建位置,然后单击“新建”按钮即可。 示例:假设我们…

    other 2023年6月27日
    00
  • 解析C/C++指针、函数、结构体、共用体

    解析C/C++指针、函数、结构体、共用体攻略 指针 指针是C/C++中非常重要的概念,它存储了一个变量的内存地址。通过指针,我们可以直接访问和修改内存中的数据。以下是指针的基本用法: 声明指针 要声明一个指针,需要使用*符号。例如,int* ptr;声明了一个指向整数的指针。 初始化指针 指针可以通过将其指向一个变量或者使用NULL进行初始化。例如,int*…

    other 2023年8月16日
    00
  • Android项目开发之UI设计器

    Android项目开发之UI设计器攻略 简介 在Android项目开发中,UI设计器是一个非常重要的工具,它可以帮助开发者快速创建和设计应用程序的用户界面。本攻略将详细介绍如何使用Android Studio中的UI设计器来创建和编辑UI布局。 步骤 步骤一:打开Android Studio并创建新项目 首先,打开Android Studio并创建一个新的A…

    other 2023年8月21日
    00
合作推广
合作推广
分享本页
返回顶部