七种JS实现数组去重的方式

七种JS实现数组去重的方式

数组去重是JS中常用的操作之一。本文将介绍七种JS实现数组去重的方式,其中包括了常见的基于ES6的Set去重方式、基于map去重方式,以及经典的双重循环方式、indexOf方式、includes方式、filter方式和reduce方式。

在介绍这七种去重方式前,先定义一个示例数组arr,便于后续的演示:

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

使用ES6的Set去重

ES6新增了Set类,它的特点是元素唯一、无序且可以迭代。使用Set去重需要将数组转为Set,再将Set转为数组即可,实现代码如下:

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

使用map去重

使用map去重可以实现保持元素在原数组中的顺序的去重,实现方式如下:

const map = new Map();
const arr3 = arr.filter(item => !map.has(item) && map.set(item, 1));
console.log(arr3); // [1, 2, 3, 4, 5]

使用双重循环去重

双重循环方式是一种常见的去重方式,实现方式如下:

const arr4 = [];
for(let i = 0, len = arr.length; i < len; i++) {
  for(let j = i + 1; j < len; j++) {
    if(arr[i] === arr[j]) {
      j = ++i;
    }
  }
  arr4.push(arr[i]);
}
console.log(arr4); // [1, 2, 3, 4, 5]

使用indexOf去重

使用indexOf方式可以较简单地去重,实现方式如下:

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

使用includes去重

使用includes方式与indexOf方式类似,实现方式如下:

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

使用filter去重

使用filter方式可以实现去重,并返回一个新数组,实现方式如下:

const arr7 = arr.filter((item, index, arr) => {
  return arr.indexOf(item) === index;
});
console.log(arr7); // [1, 2, 3, 4, 5]

使用reduce去重

使用reduce方式也可以实现数组去重,实现方式如下:

const arr8 = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(arr8); // [1, 2, 3, 4, 5]

以上就是七种JS实现数组去重的方式的详细介绍,每种方式都有自己的特点和适用场景,开发者可以根据需要选择不同的去重方式进行使用。

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

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

相关文章

  • js在HTML的三种引用方式详解

    我来详细讲解“js在HTML的三种引用方式详解”。 什么是js在HTML的三种引用方式 在HTML中,我们可以通过三种不同的方式引入JavaScript代码,让我们的网页拥有更多的交互性和动态效果。这三种引用方式分别是: 内部文件引用:在HTML文件中使用<script>标签引入JavaScript文件; 外部文件引用:在HTML文件中使用&lt…

    JavaScript 2023年5月27日
    00
  • 手写TypeScript 时很多人常犯的几个错误

    当我们手写TypeScript时,很容易会犯一些常见的错误。在这里,我来分享一些常见的错误,并提供一些示例说明和解决方案。 1. 类型声明不正确 在TypeScript中,类型声明非常重要,而类型声明不正确则会导致代码中的错误。例如: function add(num1, num2) { return num1 + num2; } let result = …

    JavaScript 2023年6月10日
    00
  • 使用JS获取SessionStorage的值

    获取SessionStorage的值是前端开发过程中常用的操作之一,下面是使用JavaScript获取SessionStorage的详细步骤: 1. 确认SessionStorage已经存储了值 在执行获取SessionStorage的值之前,我们需要先确认SessionStorage中已经存储了需要获取的值。存储SessionStorage的方式一般有两种…

    JavaScript 2023年6月11日
    00
  • js判断上传文件类型判断FileUpload文件类型代码

    下面是详细讲解“js判断上传文件类型判断FileUpload文件类型代码”的完整攻略。 1. 判断上传文件类型 在前端上传文件时,通常需要对上传的文件类型进行限制,以保证服务器端能正确处理文件。在JavaScript中,可以通过判断FileInput元素的文件类型来实现对上传文件类型的限制。 具体实现步骤如下: 1.1 获取上传文件的类型 使用File AP…

    JavaScript 2023年5月27日
    00
  • javascript学习笔记(十一) 正则表达式介绍

    下面我来详细讲解一下“JavaScript学习笔记(十一) 正则表达式介绍”的完整攻略。 正则表达式介绍 什么是正则表达式 正则表达式 (Regular Expression) 是一种通过编写规则来描述字符串特征的方法。通常用来匹配、查找、替换字符串中的特定字符或模式,可以让我们更方便地对文本进行处理。 正则表达式的基本语法 正则表达式由一组字符和特殊符号组…

    JavaScript 2023年6月10日
    00
  • 用Axios Element实现全局的请求loading的方法

    下面是使用Axios Element实现全局请求loading的方法的攻略。 什么是Axios Element Axios Element是基于Axios封装的一个插件,使得我们可以很方便地对Axios进行增强和自定义操作。 实现全局请求loading的方法 我们可以将全局请求loading的实现分为以下几个步骤: 1. 安装Axios Element 我们…

    JavaScript 2023年6月11日
    00
  • Javascript Date getFullYear() 方法

    以下是关于JavaScript Date对象的getFullYear()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getFullYear()方法 JavaScript Date对象的getFullYear()方法返回一个表示年的四位数字。该方法可用获取当前日期的年份。 下是使用Date对象的getFullYear()方法的示例:…

    JavaScript 2023年5月11日
    00
  • JS实现密码框效果

    JS实现密码框效果的攻略如下: 1. HTML结构 密码框是一个input标签,需要添加type为password的属性,如下: <input type="password" id="password-input"> 2. JS处理 2.1 获取输入框 首先需要获取到输入框的DOM元素,这里我们使用docu…

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