js数组去重的常用方法总结

好,下面是关于“js数组去重的常用方法总结”的完整攻略。

js数组去重的常用方法总结

一、利用Set去重

ES6新增了Set容器,可以创建一个不重复的集合。因此,利用Set可以快速去重,代码如下:

const arr = [1, 2, 3, 3, 4, 5, 4];
const result = Array.from(new Set(arr));   // [1, 2, 3, 4, 5]

首先将数组转换成Set对象,然后再将Set对象转换成数组即可。这种方法简单易懂,但只适用于基本数据类型。如果需要去重的是复杂数据类型,需要注意Set中对象的比较方式是浅比较,因此可能会出现误判。

二、利用双重循环进行去重

双重循环的方式比较直观,代码如下:

const arr = [1, 2, 3, 3, 4, 5, 4];
const result = [];
for (let i = 0; i < arr.length; i++) {
  let isRepeat = false;
  for (let j = i + 1; j < arr.length; j++) {
    if (arr[i] === arr[j]) {
      isRepeat = true;
      break;
    }
  }
  if (!isRepeat) {
    result.push(arr[i]);
  }
}

套两层循环,每次比较相邻的两个元素,如果有重复的再通过标记位去除即可。这种方法虽然不需要额外的空间,但时间复杂度较高,不适用于大规模数据的去重。

三、利用indexOf进行去重

indexOf方法可以查找数组中指定元素的位置,如果没有找到返回-1。基于这个原理,可以通过一次循环来实现去重,代码如下:

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

单层循环,每次将数组中的元素与result中的元素比较,如果result中没有则加入。这种方法相对于双重循环要快一些,但也不太适用于大规模数据的去重。

四、利用Map进行去重

Map对象是一种简单的键/值映射。利用这种映射关系,就可以实现数组去重。代码如下:

const arr = [1, 2, 3, 3, 4, 5, 4];
const map = new Map();
const result = [];
for (let i = 0; i < arr.length; i++) {
  if (!map.has(arr[i])) {
    map.set(arr[i], true);
    result.push(arr[i]);
  }
}

利用Map的方法,每次将数组中的元素存入Map中,重复元素会被覆盖。利用has方法可以判断Map中是否存在该元素,如果不存在则将其保存至result中,这样就可以完成去重了。这种方法相对来说不太快,但适用性较广,可以实现复杂数据类型的去重。

五、利用reduce方法进行去重

Reduce方法是JS数组原型中的一个函数,它可以快捷地对数组中的每个元素进行操作。代码如下:

const arr = [1, 2, 3, 3, 4, 5, 4];
const result = arr.reduce((acc, cur) => {
  if (!acc.includes(cur)) {
    acc.push(cur);
  }
  return acc;
}, []);

使用reduce可以快速地对数组中元素去重。acc为存储去重后的数组,每次遍历时判断是否重复,如果不重复则加入acc中。这种方法也比较适用于复杂数据类型的去重。

总结

本文总结了js数组去重的五种常用方法,包括利用Set、双重循环、indexOf、Map以及reduce,各有特点,适用于不同数据类型和规模的去重需求。

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

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

相关文章

  • JavaScript使用slice函数获取数组部分元素的方法

    获取数组部分元素是在我们日常的编程中非常常见的操作,JavaScript提供了slice()函数帮助我们实现这个功能。接下来我将为大家详细介绍slice函数的使用方法。 一、slice()函数概述 slice()函数用于获取数组的某一部分元素,它不会修改原数组,而是返回一个新的数组。slice()函数有两个参数,分别是起始索引和结束索引,其中起始索引是要获取…

    JavaScript 2023年5月27日
    00
  • js实现左右轮播图

    下面我将为您讲解如何用Javascript实现左右轮播图。 什么是轮播图? 轮播图是一种视觉效果,用于网站或应用程序中的图片或内容展示。它通常是横向或纵向排列的一组图像,以便用户可以滚动以查看更多内容。 实现方法 1. HTML结构 首先,我们需要创建一个HTML结构,用于保存轮播图的图片,以下是一个简单的示例: <div class="sl…

    JavaScript 2023年6月11日
    00
  • 深入理解Javascript中的循环优化

    深入理解Javascript中的循环优化 本文将介绍Javascript中循环优化的基本方法和实践经验,并通过两个具体示例,说明循环优化的重要性以及如何实现循环优化。 为什么要进行循环优化? 循环是Javascript中最常见的语句之一,它在执行时会产生大量的机器指令。当循环次数较多时,循环的性能问题会严重影响程序的执行效率。因此,对循环的优化对于提升程序的…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript基于面向对象之创建对象(2)

    首先,你需要了解JavaScript中面向对象编程的概念。在JavaScript中,我们可以通过构造函数和原型链来实现面向对象编程。 第二篇文章“详解JavaScript基于面向对象之创建对象(2)”主要介绍了通过原型链来创建对象的方式。具体内容包括: 原型链是什么? 原型链是一种由多个对象组成的链式结构,这些对象通过原型链相互关联,在其中可以共享属性和方法…

    JavaScript 2023年5月27日
    00
  • Python下载懒人图库JavaScript特效

    Python下载懒人图库JavaScript特效攻略 在编写网站时,我们可能需要使用到 JavaScript 特效。这时候就需要一些高质量的特效图片来装饰网站,懒人图库是一款专门提供免费高清图片下载的网站。本攻略介绍如何通过 Python 在懒人图库中下载 JavaScript 特效图片。 步骤 1:安装 Python requests 库 在使用 Pyth…

    JavaScript 2023年5月28日
    00
  • 解析php防止form重复提交的方法

    下面是解析PHP防止form重复提交的方法的完整攻略: 什么是防止form重复提交? 表单重复提交的情况在Web应用程序中很常见,这可能会导致应用程序的各种问题,例如重复表单提交对数据库的写入,导致数据重复或错误。这是一种不良的用户体验,可能会使用户失去对应用程序的信任感。为了避免这种情况,开发人员已经产生了一些技术来防止表单重复提交,这是Web应用程序设计…

    JavaScript 2023年6月11日
    00
  • JavaScript变量基本使用方法实例分析

    首先我们需要理解什么是JavaScript变量,变量是一个容器,用于存储数据值。在JavaScript中创建变量时需要使用var、let或const关键字进行声明。 声明变量 var变量 使用var声明的变量在声明的时候没有值,我们可以在后面对其进行赋值,也可以在声明时直接赋值。var有全局作用域和函数作用域两种,而且var可以被重复声明。 var a = …

    JavaScript 2023年5月27日
    00
  • js中怎么判断两个字符串相等的实例

    判断两个字符串是否相等是编程中经常涉及到的问题,JavaScript中也提供了多种方法来实现字符串的比较。下面是两个示例来说明如何使用JavaScript判断两个字符串相等。 示例一:使用===比较运算符 使用===比较运算符可以判断两个字符串是否完全相等,包括字符串的值和类型。如果两个字符串完全相等,则返回true,否则返回false。 const str…

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