七种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获取文件里面的所有文件名(实例)

    下面是关于“js获取文件里面的所有文件名”的详细攻略: 1. 通过Ajax请求读取文件列表 首先,我们可以通过使用Ajax请求来获取文件目录下的所有文件名称,具体步骤如下: 1.1 创建一个XMLHttpRequest对象 var xhr = new XMLHttpRequest(); 1.2 发送请求并指定请求方式和请求地址 xhr.open(‘GET’,…

    JavaScript 2023年5月27日
    00
  • JavaScript框架编程第2/2页

    《JavaScript框架编程》第2/2页是一篇介绍如何编写JavaScript框架的教程。以下是该篇文章的完整攻略: 概述 JavaScript框架是为了使JavaScript代码更可重用、可扩展和易于维护而创造的。框架是为了解决开发过程中重复工作的问题,因此可以轻松地实现重复使用和扩展。编写框架可帮助开发人员组织自己的代码并使用固定的约定。 构建开发环境…

    JavaScript 2023年5月17日
    00
  • 拿捏javascript对象增删改查应用及示例

    介绍拿捏JavaScript对象增删改查的攻略如下: 增加对象属性 在JavaScript中,我们可以通过以下方式向对象添加属性: objectName.propertyName = propertyValue; 其中,objectName表示对象的名称,propertyName表示要添加的属性名称,propertyValue表示要添加的属性值。 示例: l…

    JavaScript 2023年5月27日
    00
  • JavaScript 实现模态对话框 源代码大全

    让我给你详细讲解一下“JavaScript 实现模态对话框 源代码大全”的完整攻略。 什么是模态对话框? 模态对话框是一种常用的弹窗提示框,它可以在网页中弹出提示框,并阻止用户对页面的其他操作,直到确定或取消该对话框。 实现模态对话框的方法 实现模态对话框需要使用JavaScript编写脚本。一般来说,实现模态对话框的方法有两种: 方法一:使用CSS实现 我…

    JavaScript 2023年6月11日
    00
  • 利用JavaScript脚本实现滚屏效果的方法

    下面是实现滚屏效果的方法的完整攻略: 利用JavaScript脚本实现滚屏效果的方法 基本思路 我们可以通过监听鼠标或者触摸事件,根据移动的距离来控制页面滚动的位置,从而实现滚屏效果。具体的步骤如下: 监听鼠标或者触摸事件,获取开始移动时的位置和移动的距离。 根据移动的距离计算需要滚动的距离。 利用window.scrollTo()函数来滚动页面的位置。 处…

    JavaScript 2023年6月10日
    00
  • JavaScript下申明对象的几种方法小结

    现在为大家详细讲解“JavaScript下申明对象的几种方法小结”。 一、对象的概念 在JavaScript中,对象是一种复合的数据类型。对象可以包含多个属性(键值对),每个属性的值可以是基本类型数据、对象或函数等。对象常常用于描述真实世界中的事物,比如一本书、一个人或一辆汽车等等。 二、申明对象的几种方式 JavaScript中申明对象的方式有多种,下面会…

    JavaScript 2023年5月27日
    00
  • HTML5中的websocket实现直播功能

    下面是关于“HTML5中的WebSocket实现直播功能”的完整攻略: 一、什么是WebSocketWebSocket是一个协议,它提供了在单个TCP连接上进行全双工通信的能力,并能够让服务器主动向客户端推送数据。相比于HTTP,WebSocket的一个明显优点就是它的实时性更高,因为不需要为了发送数据而频繁地建立和关闭TCP连接。 二、创建WebSocke…

    JavaScript 2023年6月11日
    00
  • JS 字符串连接[性能比较]

    下面是关于JS字符串连接的完整攻略: 什么是字符串连接? 字符串连接是指将多个字符串拼接成一个新的字符串的过程。在JS中,有多种方法可以进行字符串连接,比如用+运算符,使用模板字符串等。不同的方法会对性能造成不同的影响。 性能比较 String Concatenation性能测试显示,使用不同的方式进行字符串连接,性能会有很大的差别。 基于这个事实,我写了两…

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