JavaScript实现数组去重的7种方法

JavaScript实现数组去重的7种方法

在JavaScript中,实现数组去重是一个常见的需求。下面介绍7种实现数组去重的方式。

1.使用 Set

使用ES6中的Set对象可以方便地实现数组去重,使用Set之后,将数组转换为Set之后,再将Set转换为数组即可。

const arr = [1, 2, 1, 2, 3]
const newArr = Array.from(new Set(arr))
console.log(newArr) // [1, 2, 3]

2.使用for循环和indexOf

通过遍历原数组,将不重复的元素添加到新数组中实现去重。

const arr = [1, 2, 1, 2, 3]
const newArr = []
for(let i=0; i<arr.length; i++) {
   if(newArr.indexOf(arr[i]) === -1) {
      newArr.push(arr[i])
   }
}
console.log(newArr) // [1, 2, 3]

3.使用for循环和includes

使用ES6中的includes方法可以判断元素是否在数组中,配合for循环实现数组去重。

const arr = [1, 2, 1, 2, 3]
const newArr = []
for(let i=0; i<arr.length; i++) {
   if(!newArr.includes(arr[i])) {
      newArr.push(arr[i])
   }
}
console.log(newArr) // [1, 2, 3]

4.使用reduce

使用reduce方法进行去重处理。

const arr = [1, 2, 1, 2, 3]
const newArr = arr.reduce((prev, cur) => {
   if(!prev.includes(cur)) {
      prev.push(cur)
   }
   return prev
}, [])
console.log(newArr) // [1, 2, 3]

5.使用filter

使用filter方法配合indexOf方法实现数组去重。

const arr = [1, 2, 1, 2, 3]
const newArr = arr.filter((item, index) => arr.indexOf(item) === index)
console.log(newArr) // [1, 2, 3]

6.使用ES6中的Map

通过使用ES6中的Map对象,可以实现数组去重。

const arr = [1, 2, 1, 2, 3]
const map = new Map()
const newArr = []
for(let i=0; i<arr.length; i++) {
   if(map.has(arr[i])) {
      map.set(arr[i], true)
   } else {
      map.set(arr[i], false)
      newArr.push(arr[i])
   }
}console.log(newArr) // [1, 2, 3]

7.使用对象键值对

使用对象键值对实现数组去重。

const arr = [1, 2, 1, 2, 3]
const obj = {}
const newArr = []
for(let i=0; i<arr.length; i++) {
   if(!obj[arr[i]]) {
      obj[arr[i]] = true
      newArr.push(arr[i])
   }
}
console.log(newArr) // [1, 2, 3]

示例说明

以第一个方法为例,数组[1, 2, 1, 2, 3]通过使用Set对象,先将数组转换为Set对象,再将Set对象转换为数组,从而实现数组去重,输出结果为 [1, 2, 3]。

const arr = [1, 2, 1, 2, 3]
const newArr = Array.from(new Set(arr))
console.log(newArr) // [1, 2, 3]

再以第三个方法为例,使用for循环和includes方法进行遍历和去重,输出结果同样为[1, 2, 3]。

const arr = [1, 2, 1, 2, 3]
const newArr = []
for(let i=0; i<arr.length; i++) {
   if(!newArr.includes(arr[i])) {
      newArr.push(arr[i])
   }
}
console.log(newArr) // [1, 2, 3]

以上为对“JavaScript实现数组去重的7种方法”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现数组去重的7种方法 - Python技术站

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

相关文章

  • 原生JS实现拖拽图片效果

    以下是我详细讲解“原生JS实现拖拽图片效果”的完整攻略。 简介 在Web开发中,拖拽功能已经成为了很常见的一种交互方式。利用原生JS实现拖拽功能是我们必须掌握的技能之一。本攻略将会教你如何使用原生JS实现拖拽图片的效果,便于你在实际开发中适用。 实现步骤 1. HTML代码 首先,我们需要有一张图片,并在HTML中添加img标签。代码如下: <!DOC…

    JavaScript 2023年6月11日
    00
  • Javascript类型判断相关例题及解析

    Javascript类型判断相关例题及解析 前言 在Javascript编程中,进行类型判断十分常见。需要熟悉Javascript中数据类型、类型判断方法以及常见类型判断例题的解析。在本篇文章中,我们将结合实例,深入分析Javascript中类型判断的相关知识点。 数据类型 Javascript中的数据类型分为基本数据类型和引用数据类型。 基本数据类型 Ja…

    JavaScript 2023年6月10日
    00
  • js 弹出框只弹一次(二次修改之后的)

    下面是“js 弹出框只弹一次(二次修改之后的)”的完整攻略: 1. 先分析问题 在实现弹出框只弹一次之前,我们需要先分析一下问题出在哪里。可能是因为弹框的逻辑写在了循环体内,导致每次循环都会弹出一个弹框,也有可能是因为没有设置弹框只弹一次的标记,导致每次都会弹出弹框。 2. 解决方案 2.1 将弹框逻辑放到循环体外面 let flag = true; for…

    JavaScript 2023年6月11日
    00
  • Javascript 面向对象之重载

    Javascript 面向对象之重载 什么是重载 重载(Overloading)指的是一个类中多个方法的名称相同,但是参数列表不同(参数类型、参数个数、参数顺序),这样的方法称为重载方法。在使用时,编译器会根据参数数量、类型和顺序来决定调用哪个方法。 然而在 Javascript 中,由于其灵活的语言特性,本身不支持函数的重载。 如何实现重载 通过 argu…

    JavaScript 2023年5月27日
    00
  • JavaScript字符串处理(String对象)详解

    JavaScript字符串处理(String对象)详解 在JavaScript中,字符串也是一个重要的数据类型。String对象中提供了一系列的方法来对字符串进行处理。本篇攻略将详细讲解JavaScript中String对象的常用方法。 字符串的定义 在JavaScript中,字符串可以用单引号或双引号来定义。例如: var str1 = ‘hello wo…

    JavaScript 2023年5月19日
    00
  • vue的table表格组件的封装方式

    下面我来详细讲解 “Vue的Table表格组件的封装方式”。 一、前言 Vue的Table表格组件在许多Web应用程序中都有着广泛的应用,Table组件可以方便地呈现大量的数据,并提供强大的过滤、搜索、分页等功能,十分受 Web 开发者的喜欢。因此,本文将为大家分享一种Vue的Table表格组件的封装方式。 二、封装方式 1、基本思路 Vue的Table表格…

    JavaScript 2023年6月10日
    00
  • 用函数式编程技术编写优美的 JavaScript_ibm

    用函数式编程技术编写优美的 JavaScript – 完整攻略 函数式编程是一种将计算机程序视为数学函数的编程范式。在这种编程方式下,函数被视为是数据流变换的原子操作,程序的执行就是一个函数接受输入并返回输出的过程。由于函数式编程减少了状态变量的使用,可以使得代码更加简洁、易读、易维护。 在 JavaScript 中,函数式编程几乎可以应用于所有方面。本文将…

    JavaScript 2023年5月19日
    00
  • 在javaScript中检测数据类型的几种方式小结

    接下来我将详细讲解在JavaScript中检测数据类型的几种方式小结。 检测数据类型的几种方式 typeof typeof 操作符可以返回值的数据类型字符串。它只有一些简单的规则,可以处理大多数数据类型,但也存在一些特殊情况。如下所示: typeof 123; // "number" typeof "123"; // …

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