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日

相关文章

  • H5用户注册表单页 注册模态框!

    那么首先我们需要了解一下“H5用户注册表单页 注册模态框”的含义。这是一种用于网站或应用程序上的用户注册页面,同时也可以使用JavaScript模态框来实现更好的用户体验。 接下来,我们将通过以下步骤来实现这种表单页面和模态框的创建。 步骤1:创建HTML页面 我们可以通过写HTML代码来创建用户注册表单页面。可以使用<form>标签来包含输入字…

    Java 2023年6月15日
    00
  • spring boot和spring cloud之间的版本关系

    Spring Boot和Spring Cloud是两个非常重要的Java开源框架,Spring Boot是基于Spring的快速开发框架,而Spring Cloud是基于Spring Boot的云应用开发框架。它们之间具有一定的版本关系。 Spring Boot版本与Spring Cloud版本的兼容性 通常来说,你可以选择使用不同版本的Spring Boo…

    Java 2023年5月15日
    00
  • 微信小程序实现多选功能

    微信小程序实现多选功能的完整攻略可以分为以下步骤: 1.在页面中定义 checkbox 组件 首先需要在页面的 wxml 文件中定义多组 checkbox 组件,每个复选框都应该设置不同的 value 值以便于选项的区分,同时为了便于管理,可以用相同的 name 属性将多个选项组成一个组. 下面是一个示例代码: <checkbox-group bind…

    Java 2023年5月23日
    00
  • JAVA实现连接本地打印机并打印文件的实现代码

    Java实现连接本地打印机并打印文件的实现代码需要以下步骤: 步骤一:导入打印相关的依赖库 Java中的javax.print包提供了打印相关的API,需要在项目中导入此包相关的依赖,可以使用Maven等方式进行导入。 步骤二:获取系统中支持的打印机 可以通过javax.print.PrintServiceLookup类的lookupPrintService…

    Java 2023年5月19日
    00
  • 任意Json转成无序列表的方法示例

    下面是详细讲解“任意Json转成无序列表的方法示例”的完整攻略。 1. 理解Json数据格式 首先,我们需要了解Json数据格式。Json是一种轻量级的数据交换格式,它可以表示对象、数组、字符串、数字、布尔值和null。Json对象由花括号{}包裹,对象中包含各种键值对,键值对之间用逗号分隔;Json数组由方括号[]包裹,数组中包含各种数据类型,数据之间用逗…

    Java 2023年6月16日
    00
  • Spring Security之默认的过滤器链及自定义Filter操作

    Spring Security 是 Spring 框架中提供的安全管理框架,它是基于 Servlet 过滤器实现的。 默认的过滤器链 Spring Security 在初始化时会自动生成一整套默认的过滤器链,这些过滤器链是按顺序有序地执行的。因为每个过滤器链都有特定的功能和处理逻辑,对于一个用户的请求,在整个过滤器链中会按照顺序经过每一个过滤器链的处理。最终…

    Java 2023年5月20日
    00
  • Hibernate迫切连接和普通连接的区别实例详解

    Hibernate迫切连接和普通连接的区别实例详解 在使用Hibernate框架进行开发时,连接数据库是必不可少的一项工作。而在连接数据库的过程中,Hibernate支持两种连接方式:迫切连接和普通连接。下面我们就来详细了解这两种连接方式的区别及其使用场景,以及实例说明。 迫切连接 迫切连接又称立即加载,指在查询主对象时,同时将关联对象也加载出来。也就是说,…

    Java 2023年6月15日
    00
  • Spring Cloud Gateway编码实现任意地址跳转的示例

    首先我们来介绍一下Spring Cloud Gateway。 Spring Cloud Gateway是Spring Cloud生态中的一个全新项目,它是基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,旨在为微服务提供一种简单而统一的方式来访问外部服务。 那么,如何实现Spring Cloud Gat…

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