javascript数组去重方法汇总

JavaScript数组去重方法汇总

在JavaScript中,数组是一种非常重要的数据类型,经常在实际的开发中用来存储一系列数据。但是,有时候我们需要对数组进行去重操作,即只保留数组中的不重复元素。本文将介绍几种常用的JavaScript数组去重方法。

1.使用Set对象

使用ES6中新增的Set对象可以非常方便地对数组进行去重。Set对象中的所有元素都是唯一的,可以保证去重后的数组中不会有重复元素。

示例代码如下:

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

上述代码中,先定义了一个包含重复元素的数组arr,然后通过...运算符和Set对象,将数组去重后得到不重复元素的数组uniqueArr,并输出到控制台。

2.使用Array.prototype.filter()

使用Array.prototype.filter()方法可以比较简单地实现数组去重操作。该方法会返回一个新的、根据指定条件过滤后的数组,可以根据数组的indexOf方法来过滤掉重复元素。

示例代码如下:

let arr = [1, 2, 3, 2, 1];
let uniqueArr = arr.filter((item, index, arr) => {
  return arr.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3]

上述代码中,filter()方法接收一个回调函数作为参数,该回调函数中的三个参数分别表示当前元素、当前元素的索引和当前数组。通过对当前元素在数组中第一次出现的位置进行比较,可以过滤掉重复元素,最终得到去重后的数组uniqueArr,并输出到控制台。

3.使用for循环嵌套比较

当数组中包含的元素不是基本类型(如对象等)时,上述方法不能实现去重。此时,可以使用for循环嵌套比较的方法来实现数组去重。遍历原数组,将每个元素与其后面的所有元素依次进行比较,如果重复则将其剔除。

示例代码如下:

let arr = [1, 2, 3, { name: 'Tom' }, { name: 'Tom' }, 1];
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  for (let j = i + 1; j < arr.length; j++) {
    if (arr[i] === arr[j]) {
      j = ++i;
    }
  }
  uniqueArr.push(arr[i]);
}
console.log(uniqueArr); // [1, 2, 3, { name: 'Tom' }]

上述代码中,先定义了一个包含重复元素和对象的数组arr,然后使用for循环嵌套比较的方法去除数组中的重复元素,并将去重后的元素添加到uniqueArr数组中,最终输出到控制台。

结语

本文介绍了几种常用的JavaScript数组去重方法,包括使用Set对象、Array.prototype.filter()方法以及for循环嵌套比较的方法。对于不同的情况,可以选择不同的去重方法来实现需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript数组去重方法汇总 - Python技术站

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

相关文章

  • JavaScript 图片预览效果 推荐

    JavaScript 图片预览效果是一种常见的 Web 前端功能,它可以让用户在网页中浏览图片时更加方便、便捷。本攻略将详细讲解如何使用 JavaScript 实现图片预览效果。下面是详细的步骤。 准备工作 在开始之前,我们需要准备以下内容: 一个 HTML 文件,其中包含需要预览的图片元素。 一个 JavaScript 文件,用于实现图片预览效果。 实现过…

    JavaScript 2023年6月10日
    00
  • JavaScript 中对象的深拷贝

    JavaScript 中对象的深拷贝是一个非常常见且实用的问题。对象的深拷贝是指在拷贝对象时,同时也将其内部所有子对象进行拷贝,而不仅仅是拷贝对象本身。 通常我们在进行拷贝时会用到 JSON 序列化,也可以使用递归等方式进行深拷贝。 下面将通过以下步骤来讲解对象的深拷贝: 1. 判断其类型 在进行深拷贝时,首先要判断要拷贝的对象是什么类型。其中分为两种情况:…

    JavaScript 2023年5月27日
    00
  • JavaScript实现获取dom中class的方法

    实现获取DOM中class的方法,可以使用原生JavaScript中的classList属性,也可以使用jQuery中的选择器方法。 使用原生JavaScript 获取DOM元素节点 javascript var element = document.getElementById(‘elementId’); 获取节点中的class列表 javascript …

    JavaScript 2023年6月10日
    00
  • 开发跨浏览器javascript常见注意事项

    开发跨浏览器 JavaScript 常见注意事项 在开发 JavaScript 应用程序时,我们经常会遇到浏览器兼容性的问题。不同的浏览器可能会有不同的 JavaScript 实现、DOM 实现等等,导致开发过程中的一些不兼容问题。在这篇文章中,我们将提供一些常见的跨浏览器开发注意事项和技巧,以及具体的示例说明。 1. 检测浏览器 在开发跨浏览器 JavaS…

    JavaScript 2023年5月28日
    00
  • 正则表达式字面量在ECMAScript5中的变化

    正则表达式在ECMAScript5中经历了一些变化,包括正则表达式字面量的改变。下面就来一一讲解这些变化。 1. y标志符 在ECMAScript5中,正则表达式字面量新增了一个y标志符,表示执行“粘性”匹配。它指定了从目标字符串的当前位置开始匹配,并且只查找从该位置开始的匹配项。这和全局匹配(g标志符)不同,全局匹配会查找整个字符串中的所有匹配,而不仅仅是…

    JavaScript 2023年6月10日
    00
  • IE8 内存泄露(内存一直增长 )的原因及解决办法

    IE8 内存泄露问题是前端开发中经常遇到的一个问题,如果不及时解决,会导致浏览器卡顿、页面多次刷新等问题。本文将详细介绍 IE8 内存泄露问题的原因及解决办法。 原因 在 IE8 环境下,如过开发中出现以下几种情况,它们有可能会导致内存泄露问题: 循环引用 在 IE8 中,如果对象之间发生了循环引用,可能会导致内存泄露。例如,如果一个对象 A 中包含了一个对…

    JavaScript 2023年6月10日
    00
  • 原生js实现淘宝首页点击按钮缓慢回到顶部效果

    实现淘宝首页点击按钮缓慢回到顶部效果可以采用原生Javascript,下面是具体的实现步骤: 1. 获取回到顶部按钮以及页面滚动条 首先,在页面中添加“回到顶部”按钮,然后使用JS代码获取该按钮以及页面滚动条的对象: var scrollBtn = document.getElementById(‘scrollBtn’); var scrollTop = d…

    JavaScript 2023年6月10日
    00
  • 关于document.cookie的使用javascript

    下面我将为您详细讲解如何使用JavaScript中的document.cookie来操作cookie: 什么是cookie? Cookie是一种与特定网站相关联的小文本数据文件。在用户访问网站时,网站将Cookie存储在用户的计算机上,以便下次访问该站点时使用。它可以记录用户的各种信息,例如他们的用户名、购物车内容等。 使用document.cookie操作…

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