高性能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日

相关文章

  • JavaScript调试的多个必备小Tips

    JavaScript调试的多个必备小Tips 1. 使用控制台调试 控制台是JavaScript调试过程中不可或缺的工具之一,可以使用控制台输出变量值、调用函数、查看错误信息等。常用的控制台命令包括: console.log():输出变量值或文本信息到控制台。 console.error():输出错误信息到控制台。 console.info():输出信息到控…

    JavaScript 2023年6月11日
    00
  • JS基础随笔(菜鸟必看篇)

    下面是关于“JS基础随笔(菜鸟必看篇)”的详细攻略。 简介 “JS基础随笔(菜鸟必看篇)”是一篇介绍JavaScript基础知识的文章,适合初学者阅读,主要包括变量、数据类型、运算符、函数、DOM、事件等内容。文章采用易懂的语言和多个示例帮助读者理解JavaScript的基础概念。 攻略 变量 变量是储存数据的容器,JavaScript中的变量需要通过关键字…

    JavaScript 2023年5月18日
    00
  • JavaScript接口实现代码 (Interfaces In JavaScript)

    JavaScript在ES6之前并没有真正的接口(Interfaces)的概念,但是我们可以通过一些技巧来实现接口。在这篇文章中,我将为你呈现一个完整的JavaScript接口实现代码攻略: 什么是JavaScript接口? 接口是一个描述类应该如何实现函数的集合。在函数式编程中,接口是一个纯粹的抽象概念,用于描述具有特定行为或功能的组件。 如何实现Java…

    JavaScript 2023年5月18日
    00
  • javascript输入CD-KEY自动分割的代码

    针对“javascript输入CD-KEY自动分割的代码”,我将分为以下几个方面进行详细讲解: 实现思路:解释实现这一功能的具体步骤和思路; 代码示例1:提供一个完整的javascript代码示例,体现如何实现CD-KEY的自动分割; 代码示例2:提供另外一个完整的javascript代码示例,体现如何根据自定义规则对CD-KEY进行分割。 实现思路:在实现…

    JavaScript 2023年6月11日
    00
  • javascript中判断一个值是否在数组中并没有直接使用

    要判断一个值是否在 JavaScript 数组中,一般可以使用 indexOf() 方法或 includes() 方法。 但是,有时候我们需要判断一个值是否在数组中,但又不想使用这两个方法。这时,我们可以使用其它方式来实现。 一种常见的方式是使用 for 循环,遍历整个数组,比较每个元素是否等于目标值。如果找到目标值,返回 true,否则返回 false。 …

    JavaScript 2023年5月27日
    00
  • js最实用string(字符串)类型的使用及截取与拼接详解

    Js最实用String(字符串)类型的使用及截取与拼接详解 在 JavaScript 开发中,字符串(string)类型是非常重要的数据类型之一,也是我们日常开发中经常遇到的数据类型之一。在本篇攻略中,我们将对 JavaScript 中 String 类型的基本操作进行详细讲解,主要包括字符串的创建、截取和拼接等操作。 一、字符串的创建 1、使用单引号或双引…

    JavaScript 2023年5月19日
    00
  • javascript对象的创建和访问

    当我们要处理数据的时候,常常需要使用对象。JavaScript 的对象非常灵活,并且支持动态增加属性、修改属性和删除属性。 JavaScript 对象的创建 JavaScript 对象可以通过以下几种方式进行创建: 直接量法 这是一种创建对象的常用方式,直接将属性和属性值以键值对的形式包含在花括号 { } 中: let person = { name: ‘B…

    JavaScript 2023年5月27日
    00
  • javascript中数组与对象的使用方法区别

    JavaScript 中数组和对象都是非常重要的数据类型,它们在编程中有着非常广泛和重要的应用。接下来,我将为您讲解 JavaScript 中数组与对象的使用方法区别,以及它们的应用。我将分以下三个部分详细讲解。 定义和声明 在JavaScript中,定义数组使用方括号[],例如: let arr = [1, 2, 3]; 而定义对象使用大括号{},例如: …

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