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

yizhihongxing

这里为大家详细讲解“高性能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日

相关文章

  • vue页面锁屏的完美解决方法记录

    Vue页面锁屏的完美解决方法记录 在Vue项目中,有时候需要在某些页面或某些操作时锁屏,防止用户在数据处理过程中造成不必要的错误。下面是Vue页面锁屏的完美解决方法记录。 方案介绍 该方案使用了Vue官方推荐的vue-loading-overlay插件实现锁屏。该插件提供了一种可定制的加载遮罩层,同时支持全局和组件内部使用。 实现步骤 第一步:安装插件 使用…

    JavaScript 2023年6月11日
    00
  • JS使用Promise时常见的5个错误总结

    JS使用Promise时常见的5个错误总结 Promise 是 JavaScript 异步编程的重要组成部分,它可以帮助我们更好地处理回调地狱问题,提高代码的可读性和可维护性。但是,在使用 Promise 进行编程时,可能会犯一些常见的错误。本文将总结 Promise 的5个常见错误,以及如何避免这些错误。 1. 没有正确处理 Promise 的错误 在编写…

    JavaScript 2023年5月28日
    00
  • Vue项目history模式下微信分享爬坑总结

    「Vue项目history模式下微信分享爬坑总结」这篇攻略主要是在Vue项目开发中,针对微信分享的一些问题和解决方案进行总结,并重点介绍了在使用history模式下遇到的问题和解决方法,下面是详细的攻略: 1. 什么是Vue项目history模式下的微信分享? 在Vue的路由模式下,有两种路由方式:hash和history。history模式利用了HTML5…

    JavaScript 2023年6月11日
    00
  • 转换字符串为json对象的方法详解

    当我们从外部获取到一个字符串,而这个字符串是符合json格式的,那么这个时候我们需要将这个字符串转换成json对象,方便我们在程序中处理数据。 下面是几种常见的将字符串转换为json对象的方法: 使用JSON.parse(string) JSON.parse() 是 JavaScript 中的一个内置函数,可以将一个符合 JSON 格式的字符串转化为 JSO…

    JavaScript 2023年5月27日
    00
  • JavaScript自定义超时API代码实例

    让我来详细讲解“JavaScript自定义超时API代码实例”的攻略。 简介 JavaScript 是一种非常强大的脚本语言,它可以在网页上实现丰富的交互效果。但是,在某些特定的场景中,我们需要实现一些异步操作,然而又需要限制它的执行时间,这个时候就需要使用超时 API 来解决了。JavaScript 提供了一个超时机制,我们可以在一段时间内等待一个异步操作…

    JavaScript 2023年6月11日
    00
  • javascript正则表达式基础篇

    JavaScript正则表达式是用来搜索、替换和匹配文本的一种强大的工具。本篇攻略将介绍JavaScript正则表达式的基础知识,包括正则表达式的语法和使用方法,以及常用的一些正则表达式符号和元字符。 正则表达式的语法 正则表达式是由一个或多个字符组成。其中,字符表示文本或元素,而文本则表示与字符完全匹配的文本。下面是一些常用的正则表达式符号和元字符: /p…

    JavaScript 2023年5月28日
    00
  • 微信小程序开发入门基础教程

    微信小程序开发入门基础教程 前言 微信小程序是一种全新的应用形态,可以在微信中打开,使用前端技术进行开发。相比传统APP而言,微信小程序不需要安装,用户可以直接通过微信扫描二维码或者搜索来使用。本文将从基础入门开始,介绍微信小程序的开发过程。 准备工作 在开始微信小程序开发之前,需要准备好以下环境:1. 微信开发者工具,可以在这里下载。2. 微信公众平台账号…

    JavaScript 2023年5月27日
    00
  • 基于JS脚本语言的基础语法详解

    基于JS脚本语言的基础语法详解 介绍 JavaScript(简称JS)是一种脚本语言,常用于在Web浏览器中编程,用于处理交互式的前端逻辑。随着Node.js的流行,JS也在后端得到了广泛应用。本文将详细讲解JS的基础语法,包括变量、运算符、控制流、函数、对象等内容。 变量 在JS中,可以使用关键词var、let、const声明变量。其中,var是ES5引入…

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