高性能js数组去重(12种方法,史上最全)

这里为大家详细讲解“高性能js数组去重(12种方法,史上最全)”的完整攻略。

1. 原始数组去重方法

原始数组去重方法是指使用两层循环遍历原始数组,逐个将元素与新数组中的元素作比较,如果新数组中没有相同的元素,就把该元素压入新数组。这种方法代码简单易懂,适合只有少量元素的数组去重。

代码如下:

function unique1(arr) {
  var newArr = []; // 定义新数组
  for (var i = 0; i < arr.length; i++) { // 循环原始数组
    var flag = true; // 标记位
    for (var j = 0; j < newArr.length; j++) { // 循环新数组
      if (arr[i] === newArr[j]) { // 判断新数组是否已经包含该元素
        flag = false; // 修改标记位
        break; // 结束循环
      }
    }
    if (flag) { // 如果标记位为true,说明新数组中没有该元素
      newArr.push(arr[i]); // 将该元素压入新数组
    }
  }
  return newArr; // 返回新数组
}

2. indexOf去重方法

indexOf去重方法是指将每个元素在原始数组中的位置与该元素在新数组中的位置作比较,如果相等,说明该元素已经被压入新数组,否则将该元素压入新数组。该方法代码简单,但对于大量元素的数组性能较差。

代码如下:

function unique2(arr) {
  var newArr = []; // 定义新数组
  for (var i = 0; i < arr.length; i++) { // 循环原始数组
    if (newArr.indexOf(arr[i]) === -1) { // 判断该元素是否已经在新数组中存在
      newArr.push(arr[i]); // 将该元素压入新数组
    }
  }
  return newArr; // 返回新数组
}

3. 排序去重法

排序去重法是指先将原始数组进行排序,然后从前向后遍历数组,将不同的元素压入新数组。该方法对于大量元素的数组性能较好,但是会改变原始数组的顺序。

代码如下:

function unique3(arr) {
  var newArr = []; // 定义新数组
  arr.sort(); // 对原始数组进行排序
  for (var i = 0; i < arr.length; i++) { // 循环原始数组
    if (arr[i] !== arr[i + 1]) { // 判断该元素与下一个元素是否相等
      newArr.push(arr[i]); // 将该元素压入新数组
    }
  }
  return newArr; // 返回新数组
}

4. 对象键值对去重法

对象键值对去重法是指将原始数组的每个元素作为对象的键和值,将每个键值对作为新数组中对象的属性和值进行比较,如果对象中不存在该属性,就将该键值对添加到对象中,并将该元素压入新数组。该方法比较巧妙,并且性能较好。

代码如下:

function unique4(arr) {
  var obj = {}, newArr = []; // 定义对象和新数组
  for (var i = 0; i < arr.length; i++) { // 循环原始数组
    if (!obj[arr[i]]) { // 判断该元素在对象中是否存在
      obj[arr[i]] = true; // 在对象中添加该元素
      newArr.push(arr[i]); // 将该元素压入新数组中
    }
  }
  return newArr; // 返回新数组
}

以上是四种常规的js数组去重方法,仅供参考。

更多的高性能js数组去重方法,可以查看原文链接:https://www.cnblogs.com/snandy/p/5663586.html。文章中给出了12种不同的优化去重算法,同时也给出了性能比较和代码示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:高性能js数组去重(12种方法,史上最全) - Python技术站

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

相关文章

  • JS正则表达式验证中文字符

    当我们在开发Web应用时,经常需要验证用户输入的数据是否符合规则。JS正则表达式可以轻松地完成数据验证的任务。其中,验证中文字符是很常见的需求之一。下面,我们来详细讲解JS正则表达式验证中文字符的完整攻略。 1. JS正则表达式的基础 JS正则表达式是用于匹配字符串中字符组成模式的表达式。它通过一系列特定的字符和符号定义匹配规则。下面是一些常用的JS正则表达…

    JavaScript 2023年5月19日
    00
  • 详解JavaScript实现监听路由变化

    那么就让我来详细讲解一下“详解JavaScript实现监听路由变化”的完整攻略吧。 一、引言 当我们使用现代化 JavaScript 框架时,我们通常需要动态地更新页面视图以匹配 URL 路径中的路由而不进行任何页面重新加载。这就是我们需要路由监听的原因,以更新浏览器 URL 的时候同时不需要全量渲染页面。在本文中,我们会一起探讨如何实现 JavaScrip…

    JavaScript 2023年5月27日
    00
  • 详解Element 指令clickoutside源码分析

    详解Element 指令clickoutside源码分析攻略 简介 这篇攻略将详细介绍Element UI库中使用的指令clickoutside的源码实现。常常需要在页面中对元素执行点击外部关闭操作,这种需求就可以通过clickoutside指令来实现。 环境 本篇攻略基于Vue.js和Element UI库实现。 功能 clickoutside指令的主要功…

    JavaScript 2023年6月10日
    00
  • 在JS中如何判断两个对象是否相等

    在JavaScript中,判断两个对象是否相等有多种方法,取决于你对 相等 的定义以及对象属性的类型。以下是几种常见的方法:   1. 严格相等运算符 (===) 使用 === 运算符可以比较两个对象是否引用同一个对象。如果两个变量引用了同一个对象,则它们是相等的,否则它们是不相等的。例如: const obj1 = { a: 1 }; const obj2…

    JavaScript 2023年5月8日
    00
  • JavaScript实现解析INI文件内容的方法

    当我们需要从INI文件中获取数据时,可以使用JavaScript实现解析INI文件内容的方法。以下是具体的步骤: 读取INI文件内容 通过使用 XMLHttpRequest 对象可以获取本地或远程的INI文件内容。 例如: const xhr = new XMLHttpRequest(); xhr.open(‘GET’, ‘/path/to/file.ini…

    JavaScript 2023年5月27日
    00
  • 用js自动判断浏览器分辨率的代码

    确定浏览器分辨率的方法有很多种,其中一种方法就是使用JavaScript代码来获取浏览器分辨率。以下是实现该功能的方法: 方法一:使用screen对象 我们可以使用 screen 对象来获取用户的屏幕分辨率。 let screenWidth = screen.width; let screenHeight = screen.height; console.l…

    JavaScript 2023年6月11日
    00
  • javascript中使用正则表达式进行字符串验证示例

    首先,让我们来介绍JavaScript正则表达式。正则表达式是一种用于匹配文本模式的工具,JavaScript中的正则表达式使用RegExp对象来创建,并可以通过正则表达式字面量或RegExp构造函数来定义。 在JavaScript中使用正则表达式进行字符串验证有很多应用,例如对输入的内容进行格式检查、密码校验、邮箱格式验证等。 接下来我们将介绍如何通过正则…

    JavaScript 2023年5月28日
    00
  • js的对象与函数详解

    JS的对象与函数详解 本文将讲解JavaScript中的对象和函数。对象是一种数据类型,它们可以具有属性和方法。函数是一种可调用的对象,它通常用来实现可重复使用的代码块。 对象 JavaScript中的对象可以看作是键值对的集合,每个键都是字符串,每个值可以是任意类型的数据。对象可以通过对象字面量的方式创建,也可以通过构造函数实例化。以下是创建对象的两种方式…

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