详解JavaScript数组过滤相同元素的5种方法

yizhihongxing

详解JavaScript数组过滤相同元素的5种方法

在实际应用中,我们经常会使用数组来存储一些数据。有时候我们需要从这些数据中快速过滤出相同元素,这时候就需要用到数组去重的方法。本文将详细介绍5种常见的JavaScript数组去重方法。

1.使用Set

ES6中新增了Set对象,可以帮我们去掉数组中的重复项。我们将数组转换为Set对象,再把Set对象转换回数组,就可以过滤掉数组中的重复项。

示例代码:

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

2.使用for循环嵌套

这种方法是最原始也最常见的数组去重方法,我们使用两个for循环来遍历原始数组,将不同的值存入到结果数组中。

示例代码:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  let flag = true;
  for (let j = 0; j < uniqueArr.length; j++) {
    if (arr[i] === uniqueArr[j]) {
      flag = false;
      break;
    }
  }
  if (flag) uniqueArr.push(arr[i]);
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

3.使用indexOf

我们可以通过indexOf方法来判断一个元素是否在数组中出现过。如果出现过,则indexOf返回该元素在数组中第一次出现的位置,否则返回-1。我们可以利用这个特性来判断重复项。

示例代码:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
  if (uniqueArr.indexOf(arr[i]) === -1) {
    uniqueArr.push(arr[i]);
  }
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]

4.使用includes

ES7中增加了includes方法,用来判断一个元素是否在数组中出现过。和indexOf类似,如果出现过,则返回true,否则返回false。

示例代码:

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

5.使用reduce

reduce是数组的一个常用方法,它可以将数组中的每个元素依次执行回调函数,并将上一次的计算结果作为参数传递给下一次计算。我们可以使用reduce来实现数组去重。

示例代码:

let arr = [1, 2, 3, 3, 4, 5, 5];
let uniqueArr = arr.reduce((prev, cur) => {
  if (!prev.includes(cur)) {
    prev.push(cur);
  }
  return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

总结

以上是5种常见的数组去重方法,每种方法都有其优点和适用场景。在实际应用中,我们可以根据不同的需求选择不同的方法来实现数据去重。

希望本文对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JavaScript数组过滤相同元素的5种方法 - Python技术站

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

相关文章

  • Html5页面内使用JSON动画的实现

    下面我将详细讲解HTML5页面内使用JSON动画的实现攻略,包括以下内容: 前置技能要求 JSON动画的实现步骤 示例说明 前置技能要求 在学习JSON动画实现之前,建议您掌握以下技能: HTML/CSS基础 JavaScript基础 JSON格式的理解及使用 JSON动画的实现步骤 以下为HTML5页面内使用JSON动画实现的步骤: 首先,在HTML文件中…

    JavaScript 2023年5月27日
    00
  • JavaScript实现的浏览器下载文件的方法

    现在我将为你详细讲解JavaScript实现的浏览器下载文件的方法。 1. 使用原生XMLHttpRequest对象 基本原理 通过XMLHttpRequest对象发送HTTP请求,将服务器返回的文件内容存储在本地BLOB对象中,然后使用URL.createObjectURL()生成一个文件的URL,最后在浏览器中打开这个URL,并设置download属性即…

    JavaScript 2023年5月27日
    00
  • JavaScript格式化数字的函数代码

    下面是详细讲解“JavaScript格式化数字的函数代码”的完整攻略。 什么是JavaScript格式化数字? JavaScript格式化数字的作用在于将数字按照一定的规则格式化为易于识别的格式。比如添加千位分隔符,设定小数点位数,设定前缀或后缀等等。 代码实现 下面通过个人的经验,总结了三种实现方式。 方式一:使用正则表达式 JavaScript格式化数字…

    JavaScript 2023年5月27日
    00
  • javascript 函数限制调用代码

    当我们编写 JavaScript 代码时,为了代码安全和可维护性,限制函数外部对函数内部代码的访问是十分重要的。在以下代码片段中,函数内部的数据变量可以被外部直接访问和修改,这会导致安全漏洞和代码不易维护。 let data = { name: ‘John’, age: 35 } function fetchData() { return data; } c…

    JavaScript 2023年5月27日
    00
  • JavaScript中String对象的使用方法以及实例

    String对象介绍JavaScript中String对象代表字符串类型,它是JavaScript中最常用的对象之一,而且由于字符串在JavaScript中非常常用,因此String对象中的方法也是非常丰富。 String对象的使用方法 常用方法: charAt(index):返回指定下标的字符。 concat(str1,str2):连接两个或多个字符串,返…

    JavaScript 2023年5月27日
    00
  • javascript动画之模拟拖拽效果篇

    下面我来详细讲解“javascript动画之模拟拖拽效果篇”的完整攻略。 简介 在前端开发中,拖拽是常见的交互效果之一,可以大大提升用户体验。本篇文章将介绍如何用javascript实现模拟拖拽效果。 实现原理 要实现拖拽效果,需要用到鼠标事件(mousedown、mousemove、mouseup),在mousedown事件中获取鼠标的坐标,然后在移动鼠标…

    JavaScript 2023年6月10日
    00
  • 关于JavaScript命名空间的一些心得

    关于JavaScript命名空间的一些心得 JavaScript命名空间是一种管理和组织JavaScript代码的重要方式。通过使用命名空间,我们可以避免多个JavaScript库或插件之间的代码冲突和命名冲突。以下是关于JavaScript命名空间的一些心得: 什么是JavaScript命名空间? JavaScript命名空间是一种将相关的变量、函数和对象…

    JavaScript 2023年6月11日
    00
  • js中编码函数:escape,encodeURI与encodeURIComponent详解

    JS中编码函数:escape, encodeURI与encodeURIComponent详解 Introduction 在JavaScript中,编码和解码字符串是非常重要的过程。我们经常需要将特殊字符转义,保证它们可以正确的在URL或者HTML中使用。本篇文章将详细讲解JS中三个编码函数:escape, encodeURI与encodeURICompone…

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