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

yizhihongxing

七种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 event事件在IE、FF兼容性问题

    下面是关于Js event事件在IE、FF兼容性问题的完整攻略: 1. 事件模型的差异 在Web页面中,事件是一种观察者模式的设计模式,即在一个对象上发生事件时,其它对象可以得到通知并做出相应的的处理。 但是,IE与其它主流浏览器的事件模型存在差异。IE采用了“事件冒泡”模型,而其它主流浏览器则采用了“事件捕获”模型。 事件冒泡模型 事件从最具体的元素开始发…

    JavaScript 2023年6月11日
    00
  • JS无缝滚动效果实现方法分析

    下面我会以标准的markdown格式文本,详细讲解“JS无缝滚动效果实现方法分析”的完整攻略。 简介 JS无缝滚动效果是一种常见的网页动态效果,常用于展示图片、消息、公告等内容。它可以让网页更加动态有趣,提高用户体验。 实现思路 实现JS无缝滚动效果的主要思路如下: 将需要滚动的内容复制一份,并在原内容的后面拼接。 使用定时器不断移动内容的位置。 当移动到复…

    JavaScript 2023年6月11日
    00
  • 这段js代码得节约你多少时间

    这段JS代码节约了很多处理数组的时间。具体是通过使用Array.reduce()方法来将数组中的元素合并成一个值,从而避免了使用循环操作数组的需要,大大提高了代码效率。 下面是完整的攻略: 1. 理解 Array.reduce() 方法 Array.reduce() 方法是 JavaScript 数组常用的高阶函数之一,它对数组中的所有元素进行迭代,并将它们…

    JavaScript 2023年5月27日
    00
  • 全面解析JavaScript中的valueOf与toString方法(推荐)

    全面解析JavaScript中的valueOf与toString方法 本文将全面深入地解析JavaScript中的valueOf与toString方法,以及它们的区别和各自的应用场景。 前言 JavaScript是动态的、弱类型的语言,它允许我们对不同类型的值进行各种操作。由于JavaScript的数据类型是动态的,因此只有在执行代码时才能确定变量的数据类型…

    JavaScript 2023年5月28日
    00
  • 结合 ES6 类编写JavaScript 创建型模式

    结合 ES6 类编写JavaScript 创建型模式的步骤: 定义一个类,这个类代表要创建的对象类型。 在类中定义一个静态方法,这个静态方法将使用类的构造函数来创建一个对象。 定义一个方法,用于对类的实例进行初始化。这个方法通常是一个构造函数或者一个工厂方法。 对类进行扩展,以便可以创建新的对象类型。 实例化新的对象。 下面简单介绍两种在 ES6 中创建 J…

    JavaScript 2023年6月10日
    00
  • JavaScript中array.reduce()数组方法的四种使用实例

    当我们使用JavaScript处理数组时,reduce()是一个非常有用的方法。reduce()方法允许我们通过迭代数组中的每个元素,并将它们组合成单个值来加工整个数组。下面详细来讲解如何使用reduce()方法,其中包括四种使用实例,每种用法都有一条示例。 1. 计算数组中所有元素的总和 const numbers = [1, 2, 3, 4, 5]; c…

    JavaScript 2023年5月27日
    00
  • Javascript中return的使用与闭包详解

    让我为您详细讲解Javascript中return的使用与闭包详解。 Javascript中return的使用 在JavaScript中,return语句用于将函数执行的结果返回给调用方。当函数调用return时,它会停止执行函数并返回一个值。除非使用void关键字,否则JavaScript中的函数始终返回一个值,无论是直接返回还是返回undefined。下…

    JavaScript 2023年6月10日
    00
  • 全面介绍javascript实用技巧及单竖杠

    全面介绍JavaScript实用技巧及单竖杠攻略 为何需要掌握JavaScript实用技巧? JavaScript是一门功能强大的编程语言,广泛应用于Web开发,数据可视化,游戏开发等领域。掌握JavaScript实用技巧能够极大提高开发效率,让代码更为简洁、优雅、易于阅读。 JavaScript实用技巧之单竖杠 在JavaScript语言中,单竖杠 “|”…

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