JS实现数组去重方法总结(六种方法)

yizhihongxing

这里是JS实现数组去重方法总结(六种方法)的完整攻略。

一、方法一:利用ES6 Set特性去重

利用ES6新特性Set(集合)的特性,可以很方便地去重。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3, 4]

使用Set的优点是代码简洁,不需要自己写去重方法,但是会改变原数组顺序。

二、方法二:利用ES6 Map特性去重

利用ES6新特性Map的特性,可以很方便地去重。

实现方法如下:

let arr = [1, 2, 3, 4, 1];

function unique(arr) {
  const map = new Map();
  return arr.filter(item => !map.has(item) && map.set(item, 1));
}
console.log(unique(arr)); // [1, 2, 3, 4]

使用Map的优点是可以保持原数组的顺序。

三、方法三:使用for循环去重

利用for循环逐一遍历数组,将不重复的元素放入新数组中。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = [];

for (let i = 0; i < arr.length; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i]);
  }
}

console.log(newArr); // [1, 2, 3, 4]

此方法是常规的去重方法,使用for循环对数组逐个遍历,不建议用于大型数组去重,因为这样操作效率相对较低。

四、方法四:使用reduce去重

将数组中的每个元素逐个遍历,判断该元素是否在新数组中存在。若不存在,则在新数组中添加该元素。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
console.log(newArr); // [1, 2, 3, 4]

使用reduce可以充分利用数组本身的方法进行去重操作,代码简洁便于管理,适用于大型数组。

五、方法五:利用filter方法和indexOf方法去重

使用filter方法对每个元素进行遍历,返回新数组中不存在的元素。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let newArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(newArr); // [1, 2, 3, 4]

使用filter方法和indexOf方法的优点是代码简洁,但是对于大型数组操作效率相对较低。

六、方法六:利用对象属性去重

使用对象属性的方式可以将数组中的元素作为对象的属性,去重后返回对象的键名所组成的新数组。

实现方法如下:

let arr = [1, 2, 3, 4, 1];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!obj[arr[i]]) {
    newArr.push(arr[i]);
    obj[arr[i]] = 1;
  }
}
console.log(newArr); // [1, 2, 3, 4]

使用对象属性的优点是操作效率高,但是返回的是新数组而非原数组。

以上六种方法各有特点,根据实际应用场景选择适合的方法可以大幅提高代码效率和可读性。

示例:

// 对数组去重操作并输出去重后的值
let arr = [1, 3, 2, 1, 2, 3];
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i]);
  }
}
console.log(newArr); // [1, 3, 2]

另一个示例:

// 操作方法:使用对象属性去重
let arr = [1, 3, 2, 1, 2, 3];
let obj = {};
let newArr = [];
for (let i = 0; i < arr.length; i++) {
  if (!obj[arr[i]]) {
    newArr.push(arr[i]);
    obj[arr[i]] = 1;
  }
}
console.log(newArr); // [1, 3, 2]

以上示例中,第一个示例使用for循环遍历并去重数组,第二个示例使用对象属性去重。两个示例分别说明了使用两种不同的方法实现对数组去重,但都能较好地达到去重目的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组去重方法总结(六种方法) - Python技术站

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

相关文章

  • javascript中match函数的用法小结

    关于“javascript中match函数的用法小结”这个话题,我为你准备了以下攻略: 1. match()函数的定义 match()函数是JavaScript中一个用于字符串匹配的方法,用于在字符串中搜索一个指定的正则表达式并返回一个匹配结果数组。如果没有找到任何匹配项,则返回null。该方法常常用于字符串的搜索和替换操作。 2. match()函数的语法…

    JavaScript 2023年5月27日
    00
  • 一个类似vbscript的round函数的javascript函数

    首先,我们需要明确需求:编写一个类似于VBScript中Rount函数的JavaScript函数。Round函数的作用是将一个数值四舍五入到指定的位数。 以下是JavaScript版本的Round函数的完整示例实现: // 自定义Round函数,用于四舍五入保留指定位数的数字 function round(number, precision) { var f…

    JavaScript 2023年6月10日
    00
  • js学习总结_轮播图之渐隐渐现版(实例讲解)

    “js学习总结_轮播图之渐隐渐现版(实例讲解)”是一篇关于JavaScript技术的教程文章,主要介绍了如何使用JavaScript编写一个渐隐渐现的轮播图效果。本教程分为以下几个步骤: 一、需求分析 首先明确轮播图需要具备的功能和效果,例如自动轮播、手动切换、渐隐渐现等。 二、基本思路 使用HTML5和CSS3创建轮播图的HTML结构和CSS样式,然后通过…

    JavaScript 2023年6月11日
    00
  • Javascript中的return作用及javascript return关键字用法详解

    当程序执行一个函数时,可能需要将函数的计算结果返回给调用函数的地方,这种情况下就需要使用return语句了。 在JavaScript中,return语句用于将函数执行结果返回给调用者。一旦return语句执行,函数将立即停止执行,并将return语句的值返回给调用者。如果没有指定返回值,函数将默认返回undefined。 return语句的语法格式 retu…

    JavaScript 2023年5月27日
    00
  • bootstrapValidator.min.js表单验证插件

    下面是关于bootstrapValidator表单验证插件的完整攻略。 Bootstrap Validator 概述 Bootstrap Validator 是一个用来为表单组件添加验证的 jQuery 插件。它使用了 Twitter Bootstrap 的样式,并集成了 jQuery 的特性,可以非常方便地为表单添加验证规则。 安装步骤 首先需要下载 Bo…

    JavaScript 2023年6月10日
    00
  • js如何判断不同系统的浏览器类型

    要判断不同系统的浏览器类型,可以使用JavaScript中的navigator对象。navigator对象提供了访问浏览器相关信息的接口,可以用来获取浏览器的名称、版本号、运行平台等信息。 下面是判断浏览器类型的基本步骤: 获取浏览器的代理字符串 JavaScript中的navigator对象上有一个userAgent属性,它是一个字符串,保存了浏览器提供的…

    JavaScript 2023年6月11日
    00
  • JavaScript与C# Windows应用程序交互方法

    JavaScript与C# Windows应用程序交互方法 本文将介绍在 Windows 应用程序中如何实现 JavaScript 与 C# 相互通信的方法,主要包括以下内容: 通过 WebView 控件实现 JavaScript 与 C# 的通信 JavaScript 调用 C# 方法示例 C# 调用 JavaScript 方法示例 实现 JavaScri…

    JavaScript 2023年5月27日
    00
  • JS 动态加载js文件和css文件 同步/异步的两种简单方式

    JS 动态加载js文件和css文件是Web开发中非常常见的操作。下面提供两种简单的方式来实现动态加载js文件和css文件,包括同步和异步的方式。 动态加载JS文件 同步加载JS文件 同步加载JS文件需要使用<script>标签,并设置async属性为false。这样就可以在JS文件加载完成之前暂停页面的解析和渲染,等待js文件加载完成之后再进行页…

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