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日

相关文章

  • 常用的js验证和数据处理总结

    下面详细讲解”常用的JS验证和数据处理总结”: 栏目介绍 本栏目主要针对常用的JS验证和数据处理进行总结,并提供一些示例说明,方便开发者在开发过程中快速应用。 表单数据验证 常用的表单验证有:非空验证、数字验证、电子邮件验证、电话号码验证、URL验证、正则验证。 针对非空验证可以使用下面的代码片段: function checkNotNull(str){ i…

    JavaScript 2023年6月10日
    00
  • 浏览器调试动态js脚本的方法(图解)

    浏览器调试动态JS脚本的方法分为两种,分别是浏览器内置的调试器和利用第三方工具进行调试。 浏览器内置调试器 1. 使用console.log()调试 在JS代码中插入console.log()语句,输出相关变量和信息以确认代码是否按预期执行。使用该方法的优点是简单易用,缺点是调试过程相对繁琐,需要不断插入、删除console语句。示例代码如下: var nu…

    JavaScript 2023年5月27日
    00
  • JS实现数组去重的11种方法总结

    JS实现数组去重的11种方法总结 在JavaScript中,数组去重是经常会遇到的问题。本篇文章总结了11种常用的数组去重方法,包括传统的for循环遍历、使用ES6 Set、使用对象属性、使用Array.filter()高阶函数等方法。下面将逐一介绍这些方法。 1. 使用for循环遍历 这是最简单的一种方法,也是最经典的一种方法。遍历数组中的每个元素,将其与…

    JavaScript 2023年5月27日
    00
  • Javascript 闭包详解及实例代码

    JavaScript 闭包详解及实例代码 什么是闭包? 在 JavaScript 中,闭包是一种特殊的函数,它可以访问在它创建时外部作用域的变量和参数,即使这些变量和参数在函数调用时已经不存在了。 简单来说,闭包就是“函数和函数所能够访问的外部变量的一个共同体”。 闭包的运作原理 在 JavaScript 中,每次创建一个函数,都会同时创建一个作用域链(sc…

    JavaScript 2023年6月10日
    00
  • JavaScript 映射器 array.flatMap()

    JavaScript的映射器array.flatMap()方法可以将一个数组的每个元素映射到另一个数组中,然后将所有的映射结果压缩成一个新数组。这个方法适用于一些场景,例如需要从一个二维数组中提取子数组元素,或者想要将多个数组合并成一个新的数组。下面是详细的攻略: 1. 语法 array.flatMap(callback(currentValue[, ind…

    JavaScript 2023年5月27日
    00
  • DOM 基本方法

    DOM(Document Object Model,文档对象模型)是一套对 HTML 和 XML 文档的编程接口,它把整个文档抽象成一组“节点”和“对象”结构(包括元素、属性、文本等),开发者可以利用 DOM API 对页面进行增删改查等操作。 DOM 的基本方法主要有以下几类: 1. 获取元素对象 getElementById() getElementBy…

    JavaScript 2023年6月10日
    00
  • Java、Javascript、Javaweb三者的区别及说明

    Java、Javascript、Javaweb三者的区别及说明 Java Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。Java可广泛应用于网络编程、移动设备、大型应用程序等领域。Java代码可以在不同操作系统上运行,这主要归功于Java虚拟机(JVM)。Java是一种编译型语言,使用JDK(Java Develo…

    JavaScript 2023年5月18日
    00
  • 彻底搞懂JS无缝滚动代码

    下面是我对“彻底搞懂JS无缝滚动代码”的完整攻略。 背景介绍 无缝滚动是网页中常见的交互效果,例如图片轮播、新闻滚动等。JavaScript是实现无缝滚动最常用的方法之一,而JS实现无缝滚动的方式又有很多种。本攻略将介绍其中一种实现方式。 具体实现方法 HTML部分 首先需要在HTML中创建一个装载滚动内容的容器元素,例如DIV: <div id=&q…

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