JavaScrip数组去重操作实例小结

yizhihongxing

本文将详细讲解“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日

相关文章

  • Ajax通过XML异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)

    创建数据库和数据表 首先,需要先创建一个数据库,可以取名为demo,然后在这个数据库中创建一张名为province的数据表,并插入一些数据。表结构如下: CREATE TABLE IF NOT EXISTS `province` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘省份ID’, `…

    Java 2023年6月15日
    00
  • java实现可视化日历

    下面是java实现可视化日历的完整攻略。 1.获取用户输入的年份和月份 在程序中,需要获取用户输入的年份和月份,才能正确地生成日历。可以通过Scanner类实现从控制台读取用户输入,示例代码如下: import java.util.Scanner; public class CalendarGenerator { public static void mai…

    Java 2023年5月20日
    00
  • 详解Java5、Java6、Java7的新特性

    详解 Java5、Java6、Java7 的新特性 随着 Java 技术的不断发展,每个新版本都带来了新的特性和改进,从 Java5 到 Java7,Java 技术得到了很多重大的改进和新增功能。本文将详细讲解 Java5、Java6、Java7 的新特性。 Java5 Java5 中引入了很多重要的特性,这些特性极大地改进了 Java 语言和虚拟机的性能和…

    Java 2023年5月26日
    00
  • Java程序单实例运行的简单实现

    Java程序单实例运行的简单实现 在某些情况下,我们需要保证Java程序只能运行一个实例,这就需要实现Java程序单实例运行的功能。下面是实现Java程序单实例运行的简单攻略: 1. 使用文件锁机制 使用文件锁机制实现Java程序单实例运行的方法是:在程序启动时,创建一个文件并加锁,如果文件已经被锁住,就说明已经有一个实例在运行,程序就要直接退出。下面是示例…

    Java 2023年5月19日
    00
  • SpringBoot整合MyBatisPlus详解

    下面是关于“SpringBoot整合MyBatisPlus详解”的完整攻略: 1. 环境准备 JDK 1.8及以上 Maven 3.0或更高版本 SpringBoot 2.x MyBatisPlus 3.x 2. 依赖导入 在pom.xml文件中添加如下依赖: <dependency> <groupId>com.baomidou&lt…

    Java 2023年5月20日
    00
  • JavaWeb学习笔记分享(必看篇)

    JavaWeb学习笔记分享(必看篇) 前言 JavaWeb是Java在Web领域的应用,是目前非常热门的技术之一。但是JavaWeb涉及到的技术非常广泛,初学者很容易迷失方向。本文总结了JavaWeb的基础知识,为初学者提供了一份学习笔记分享,希望能够帮助大家快速入门。 JavaWeb基础知识 1. 了解Web应用程序的组成部分 一个Web应用程序由客户端、…

    Java 2023年5月26日
    00
  • Struts 2中实现Ajax的三种方式

    Struts 2 是一个基于MVC设计模式的Web框架,既支持传统的同步请求,也可以通过 Ajax 技术实现异步请求。在 Struts 2 框架中,实现 Ajax 的方式有以下三种: 1. 使用Struts2提供的<s:url>标签 Struts 2 提供了 <s:url> 标签,该标签可以在页面中生成一个 URL 地址,当用户点击或…

    Java 2023年5月20日
    00
  • SpringMVC 异常处理机制与自定义异常处理方式

    当使用 Spring MVC 开发应用时,异常处理是非常重要的一部分。由于操作系统错误、数据库错误等各种问题可能会导致应用程序出现异常,因此在应用程序中正确处理异常是重要的。本文将介绍 Spring MVC 中的异常处理机制及如何自定义异常处理方式。 SpringMVC 异常处理机制 Spring MVC 异常处理机制的核心是将异常抛到控制器的外部并处理。S…

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