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日

相关文章

  • Backbone.js框架中Model与Collection的使用实例

    首先我们先来简单介绍一下Backbone.js框架。Backbone.js是一个轻量级的JavaScript框架,它提供了MVC(Model-View-Controller)的架构,方便我们在前端开发过程中管理数据状态和逻辑。在Backbone.js框架中,最常用的两个组件是Model和Collection。 Model:Model是指一个数据模型,它相当于…

    JavaScript 2023年6月10日
    00
  • ES6基础语法之对象介绍

    ES6基础语法之对象介绍 在ES6中,新的语法规范,对象展开操作符、对象方法、计算属性名以及内置Object属性等,在对象的定义与操作中起到了很大的作用。 对象基础 在ES6中,我们可以通过对象字面量的方式来创建一个对象,如下所示: let obj = { name: ‘张三’, age: 18, sex: ‘男’ }; ES6还引入了一个新的关键字let来…

    JavaScript 2023年5月27日
    00
  • 使用 JavaScript如何获取当月的第一天和最后一天

    获取当前月的第一天和最后一天是我们在JavaScript开发中经常需要的操作之一。下面是详细的步骤和两个示例: 获取当月第一天的日期 我们可以通过以下方式获取当前月份的第一天的日期: const now = new Date(); const firstDay = new Date(now.getFullYear(), now.getMonth(), 1);…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript 声明全局变量的三种方式详解

    当我们需要在JavaScript中定义一个全局变量时,我们可以使用以下三种方式: 1. 在全局作用域下声明变量 第一种方式是直接在全局作用域中声明变量,这样的变量就会成为全局变量。 // 直接在全局作用域中声明变量,成为全局变量 var globalVariable = ‘我是全局变量’; 上述代码中,使用 var 关键字直接声明一个变量 globalVar…

    JavaScript 2023年5月28日
    00
  • js相册效果代码(点击创建即可)

    下面是详细讲解”js相册效果代码(点击创建即可)”的完整攻略: 简介 这是一篇介绍如何制作一个简单js相册效果的攻略。这个相册会自动轮播图片,并且可以通过点击图片左右两边的箭头来切换图片。此外,在下方还有一排小圆点可以点击切换图片。我们会使用HTML、CSS和JavaScript来实现这个相册。 页面结构 首先,我们需要一个容器来承载我们的相册。可以参考下面…

    JavaScript 2023年6月11日
    00
  • web项目开发之JS函数防抖与节流示例代码

    下面来详细讲解“web项目开发之JS函数防抖与节流示例代码”的完整攻略。 什么是函数防抖和节流 在理解函数防抖和节流之前,先来看一下JS中的函数执行机制。当你在页面中注册了一个事件处理函数后,当相应事件被触发时会不断地调用该函数。然而,有时候你可能会希望函数的执行可以控制到你期望的频率或时间间隔以内,这时就需要用到函数防抖和函数节流。 函数防抖的目的是为了避…

    JavaScript 2023年6月11日
    00
  • JS动态加载脚本并执行回调操作

    JS动态加载脚本并执行回调操作是一种常见的前端开发技巧,可以提高网站的性能和用户体验。下面我将为大家详细讲解这个过程的完整攻略。 首先,我们需要了解两个关键技术:动态创建script标签和回调函数。通过动态创建script标签,我们可以在不刷新页面的情况下,在当前页面中加载外部的.js脚本文件。而回调函数则是在这个外部脚本加载完毕后执行的函数,可以让我们在脚…

    JavaScript 2023年5月27日
    00
  • js学习总结之DOM2兼容处理this问题的解决方法

    首先我们需要知道什么是DOM2以及this问题。 DOM2是指在HTML文档中操作各个元素的JavaScript API标准,与DOM1相比,DOM2提供了更加完善、更加准确、更加稳定、更加规范的处理HTML元素的方法。 this问题则是指JavaScript中this的指向问题,由于this的指向不确定,经常会导致我们编写的代码出现问题。在DOM2兼容处理…

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