js数组去重的11种方法

下面是详细讲解“js数组去重的11种方法”的完整攻略。

引言

在JavaScript开发中,常常需要我们对数组进行去重的操作。由于JavaScript本身没有提供去重的方法,开发者需要结合一些技巧和方法来完成这个任务。本文将由浅入深介绍11种JavaScript数组去重的方法,希望对大家有所帮助。

方式一:使用Set类型

Set是一种新的ES6数据类型,它存储的是独一无二的值,可以用来轻松去重。具体代码如下:

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

方式二:使用Map类型

Map是JavaScript中的一种数据结构,它存储键值对,可以用来解决数组去重的问题。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const map = new Map();
const newArr = [];

arr.forEach(item => {
  if (!map.has(item)) {
    map.set(item, true);
    newArr.push(item);
  }
});

console.log(newArr); // [1,2,3]

方式三:使用Object类型

利用对象属性唯一的特性,我们可以使用Object类型进行数组去重。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const obj = {};
const newArr = [];

arr.forEach(item => {
  if (!obj[item]) {
    obj[item] = true;
    newArr.push(item);
  }
});

console.log(newArr); // [1,2,3]

方式四:使用filter方法

使用filter方法可以遍历数组,返回由符合条件元素组成的新数组。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const newArr = arr.filter((item, index, arr) => {
  return arr.indexOf(item) === index;
});

console.log(newArr); // [1,2,3]

方式五:使用reduce方法

使用reduce方法可以遍历数组,返回一个新的累加结果,可以用来进行数组去重。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const newArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);

console.log(newArr); // [1,2,3]

方式六:使用for循环

使用for循环可以遍历数组,使用indexOf方法判断当前元素是否已经存在于新的数组中。具体代码如下:

const arr = [1, 2, 3, 2, 1];
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]

方式七:使用includes方法

使用includes方法判断当前元素是否已经存在于新的数组中,如果不存在则添加到新数组中。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const newArr = [];

arr.forEach(item => {
  if (!newArr.includes(item)) {
    newArr.push(item);
  }
});

console.log(newArr); // [1,2,3]

方式八:使用some方法

使用some方法可以遍历数组,判断是否有一个元素符合条件,可以用来进行数组去重。具体代码如下:

const arr = [1, 2, 3, 2, 1];
const newArr = [];

arr.forEach(item => {
  if (!newArr.some(val => val === item)) {
    newArr.push(item);
  }
});

console.log(newArr); // [1,2,3]

方式九:使用排序去重

使用数组排序可以去除重复元素,具体代码如下:

const arr = [1, 2, 3, 2, 1];
const newArr = [];

arr.sort().forEach((item, index, arr) => {
  if (item !== arr[index - 1]) {
    newArr.push(item);
  }
});

console.log(newArr); // [1,2,3]

方式十:使用集合算法去重

使用集合算法可以将复杂度优化到O(n),具体代码如下:

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

console.log(newArr); // [1,2,3]

方式十一:使用链表

使用链表可以在保证去重效果的同时,避免数组在删除元素时造成的性能问题。具体代码如下:

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

class LinkedList {
  constructor() {
    this.head = null;
    this.tail = null;
  }

  add(data) {
    const node = new Node(data);

    if (!this.head) {
      this.head = node;
      this.tail = node;
    } else if (this.tail.data !== data) {
      this.tail.next = node;
      this.tail = node;
    }

    return this;
  }

  toArray() {
    const arr = [];

    for (let node = this.head; node; node = node.next) {
      arr.push(node.data);
    }

    return arr;
  }
}

const arr = [1, 2, 3, 2, 1];
const list = new LinkedList();
arr.forEach(item => list.add(item));
const newArr = list.toArray();

console.log(newArr); // [1,2,3]

结语

以上就是11种JavaScript数组去重的方法,希望对大家有所帮助。当然,在实际开发中,不同的场景可能需要选择不同的方法,大家可以根据自己的业务需求来选择最合适的方法。

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

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

相关文章

  • JavaScript中立即执行函数实例详解

    JavaScript中的立即执行函数是指在定义后立即执行的函数,该函数执行后,返回值即被抛弃,仅保留函数内部的执行结果,不会对全局环境造成污染。本文将详细讲解JavaScript中立即执行函数的各个方面,包括基本语法、应用示例以及优缺点等。 基本语法 JavaScript中的立即执行函数需要使用一对匿名函数进行定义,但为了避免匿名函数对全局环境造成影响,并使…

    JavaScript 2023年5月27日
    00
  • Native.js屏幕截图实例代码

    下面我来详细讲解“Native.js屏幕截图实例代码”的完整攻略。 前置知识 在讲解本文的主要内容之前,我们需要掌握两个知识点: Native.js Native.js 是一个将 JavaScript 源代码编译成本地机器码的编译器,这样可以将 JavaScript 的运行速度提高数倍。 HTML5 Canvas HTML5 Canvas API 提供了一种…

    JavaScript 2023年6月11日
    00
  • DOM3中的js textInput文本事件

    DOM3中的textInput事件详解 textInput事件是DOM3规范中新加入的文本输入事件,用于处理在元素中输入文本的情况。在此之前,开发人员通常使用keyup、keydown等事件来处理文本输入的情况,但这些事件存在一些问题,比如无法处理复制、粘贴等操作。 textInput事件的优势在于可以精确地跟踪用户的输入,并且可以在用户输入结束后触发,不需…

    JavaScript 2023年6月10日
    00
  • js 自带的sort() 方法全面了解

    JS自带的sort()方法全面了解 在JS中,sort()方法是对数组元素进行排序的内置方法。它可以帮助我们轻松地将数组按照一定的顺序进行排序。在这里,我们将详细讲解sort()方法的使用,包括语法、参数、返回值、排序顺序等。 语法 sort()方法的基本语法如下: array.sort(compareFunction); 其中,array 表示要排序的数组…

    JavaScript 2023年5月19日
    00
  • JS实现去除数组中重复json的方法示例

    当我们处理包含多个json对象的数组数据时,可能需要将重复的json对象去重,以免造成数据混乱。以下是JS实现去除数组中重复json对象的方法示例及详细步骤: 方法一:使用Array.prototype.filter()和JSON.stringify() const arr = [{name: ‘Alice’, age: 23}, {name: ‘Bob’,…

    JavaScript 2023年6月11日
    00
  • 如何使用JavaScript快速创建一个1到100的数组

    下面是使用JavaScript快速创建1到100的数组的攻略: 1. 使用for循环快速创建一个1到100的数组 // 创建一个长度为 100 的数组 var arr = new Array(100); for (var i = 0; i < arr.length; i++) { // 把数组的每个元素赋值为它的下标+1 arr[i] = i + 1;…

    JavaScript 2023年5月27日
    00
  • JS面向对象编程——ES6 中class的继承用法详解

    JS面向对象编程——ES6 中class的继承用法详解 1. ES6中的class ES6中引入了class关键字,使得JS中的面向对象编程更为易用和易读。class语法基于原型继承实现,更加直观和易于理解,在编写复杂程序时更为方便。 下面是一个class的示例代码: class Person { constructor(name, age) { this.…

    JavaScript 2023年5月27日
    00
  • JS中Array数组学习总结

    以下是关于“JS中Array数组学习总结”的完整攻略: JS中Array数组学习总结 概念 数组是一种有序的数据集合,是JavaScript中最重要的数据类型之一。数组可以通过索引访问、插入和删除其中的元素。 声明数组 数组的声明方式有两种,分别是字面量方式和构造函数方式。 // 字面量方式 let arr1 = [1, 2, 3, 4, 5]; // 构造…

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