JavaScrip数组去重操作实例小结

本文将详细讲解“JavaScript 数组去重操作实例小结”,包括去重的常用方法以及实例说明。

一、常用去重方法

1. Set(ES6新增)

ES6 中引入了 Set 数据结构,它类似于数组,但是数组中的元素是不能重复的,可以很方便地实现数组去重。

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

2. filter

通过 Array.prototype.filter() 方法可以实现数组去重操作,将数组中的每个元素与其它元素比较,留下不重复的。

const arr = [1, 2, 2, 3, 3, 4];

const uniqueArr = arr.filter((item, index) => {
  return arr.indexOf(item) === index;
});

console.log(uniqueArr); // [1, 2, 3, 4]

3. reduce

使用 reduce 方法,遍历数组,将元素添加到结果数组中,如果该元素已存在于结果数组中,则不再添加。

const arr = [1, 2, 2, 3, 3, 4];

const uniqueArr = arr.reduce((tempArr, cur) => {
  if (!tempArr.includes(cur)) {
    tempArr.push(cur);
  }
  return tempArr;
}, []);

console.log(uniqueArr); // [1, 2, 3, 4]

二、去重实例说明

1. 数组对象去重

考虑以下数组对象:

const userArr = [
  { name: 'Alice', age: 18 },
  { name: 'Bob', age: 20 },
  { name: 'Alice', age: 18 }
];

我们可以使用 Set 去重:

const uniqueArr = [...new Set(userArr.map(user => JSON.stringify(user)))].map(str => JSON.parse(str));
console.log(uniqueArr); // [{name: "Alice", age: 18}, {name: "Bob", age: 20}]

其中,数组对象首先需要转换成 JSON 字符串,然后再去重操作完成后再将其转换回数组对象。

2. 多维数组去重

对于多维数组,也需要用到上文提到的方法进行去重。如下所示:

const multiArr = [[1, 2, 3], [2, 3, 4], [1, 2]];
const uniqueArr = multiArr.reduce((tempArr, arr) => {
  const str = arr.join();
  if (!tempArr.includes(str)) {
    tempArr.push(str);
  }
  return tempArr;
}, []).map(str => str.split(',').map(Number));

console.log(uniqueArr); // [[1, 2, 3], [2, 3, 4], [1, 2]]

其中,多维数组将每个子数组都转换成以逗号分隔的字符串,然后进行去重操作,最后在还原成多维数组。

以上就是本文的全部内容,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScrip数组去重操作实例小结 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java中读取文件转换为字符串的方法

    想要读取文件并将其转换为字符串,可以使用Java中的流和缓冲区来实现。具体实现过程如下: 使用Java中的File类打开要读取的文件,可以使用文件的路径或URI来指定文件。例如,打开当前路径下的test.txt文件: File file = new File("test.txt"); 构造一个FileReader对象以读取文件内容。如果需…

    Java 2023年5月27日
    00
  • Java算法之堆排序代码示例

    下面是Java算法之堆排序代码示例的完整攻略: 堆排序算法概述 堆排序是一种利用堆的数据结构所设计的一种基于选择的排序算法。堆排序的时间复杂度为O(nlogn),空间复杂度为O(1)。 基本思想是: 将待排序序列构造成一个堆(大根堆或小根堆); 将根节点与最后一个节点交换,将交换后的最后一个节点从堆中排除; 对剩余元素重新建堆,重复步骤2,直至剩余元素个数为…

    Java 2023年5月19日
    00
  • Java读取json数据并存入数据库的操作代码

    下面是Java读取Json数据并存入数据库的操作代码的攻略,包含以下四个步骤: 构建Json数据对象 读取Json数据 解析Json数据 将数据存入数据库 下面进行详细讲解。 步骤一:构建Json数据对象 使用Java构建Json对象可以使用json库的JSONObject类来构建。首先需要导入相应的依赖: <dependency> <gr…

    Java 2023年5月20日
    00
  • Java 如何抛出自定义的异常?

    Java语言中,自定义异常可以通过继承Exception或者其子类RuntimeException实现。通过自定义异常,可以使得代码结构更加清晰,异常情况得到更加准确的处理。下面是Java如何抛出自定义异常的详细攻略。 继承Exception类实现自定义异常 首先,定义自定义异常类时,需要继承Exception类,如下所示: public class Cus…

    Java 2023年4月27日
    00
  • java音频播放示例分享(java如何播放音频)

    Java音频播放示例分享 在Java中,我们可以借助Java Sound API来播放音频。本文将详细介绍如何使用Java Sound API来播放音频文件。 首先创建一个播放器类 我们首先需要创建一个播放器类,该类可以使用Java Sound API来播放音频文件。下面是一个基本的播放器类示例: import java.io.File; import ja…

    Java 2023年5月26日
    00
  • Java连接MySql的详细介绍

    Java连接MySQL是Java开发中的基础之一,因此需要掌握。下面详细介绍Java连接MySQL的步骤: 步骤1. 下载MySQL JDBC驱动 访问MySQL官方网站下载Java MySQL驱动,下载地址为:https://dev.mysql.com/downloads/connector/j/ 。下载完成后,将它放在CLASSPATH下,或者用Idea…

    Java 2023年5月19日
    00
  • 浅谈异常结构图、编译期异常和运行期异常的区别

    浅谈异常结构图、编译期异常和运行期异常的区别攻略 异常结构图 异常结构图通常用来描述异常的类型、继承关系以及异常的处理架构。通常情况下,异常结构图包括三部分:Throwable、Error和Exception。其中,Throwable是所有异常类型的根类,Error用来描述系统级错误,Exception则是普通异常的父类。 graph TD Throwabl…

    Java 2023年5月27日
    00
  • android相册选择图片的编码实现代码

    下面我将详细讲解”Android相册选择图片的编码实现代码”的完整攻略。 一、前置知识 在实现”Android相册选择图片的编码”之前,需要掌握一些相关的前置知识,包括: Android中的Intent机制 Android中的Uri、Bitmap和File类 Android中的图片压缩技巧 二、实现步骤 在掌握了相关的前置知识后,下面我们来讲解”Androi…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部