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

详解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日

相关文章

  • javascript 表单日期选择效果

    我来为你详细讲解一下“JavaScript 表单日期选择效果”的完整攻略。 1. 学习目标 通过本文,你将学会如何使用 JavaScript 实现表单日期选择效果,具体实现包括以下几个部分: 在 HTML 页面中编写日期选择框 使用 JavaScript 实现日期选择框的弹出及隐藏 在 JavaScript 中编写判断闰年的函数 在 JavaScript 中…

    JavaScript 2023年5月27日
    00
  • 前端实现电子签名(web、移动端)通用的实战过程

    前端实现电子签名是一个比较复杂的过程,本文将以通用的实战过程进行详细讲解,主要包含以下几个步骤: 获取签名 处理签名数据 在页面上绘制签名 将签名保存并上传到服务器 1. 获取签名 获取签名有多种方式,常见的包括手写、鼠标绘制、触摸屏绘制等。本文以鼠标绘制为例进行讲解。 在页面上添加一个画布元素,并使用JavaScript获取该元素的上下文对象: <c…

    JavaScript 2023年6月11日
    00
  • .net与javascript脚本的交互方法总结

    请看下面的详细解释。 如何在.NET和JavaScript之间进行交互 在.NET和JavaScript之间进行交互是一项非常强大的技术。以下是一些常用的.NET和JavaScript交互方法: 1. 使用Ajax/Web API 使用Ajax/Web API是一种非常常用的.NET和JavaScript交互方法。使用这种方法,您可以在服务器和客户端之间发送…

    JavaScript 2023年5月27日
    00
  • 原生JS生成九宫格

    生成九宫格的主要流程可以分为以下三步: 根据九宫格的行列数计算出总格子数和每行格子数; 循环生成格子,并设置其属性和样式; 将所有生成的格子添加到页面中。 下面是一个实现九宫格的JavaScript代码示例: // 获取容器元素 var container = document.getElementById(‘container’); // 定义九宫格的行列…

    JavaScript 2023年6月10日
    00
  • Promise静态四兄弟实现示例详解

    Promise静态四兄弟实现示例详解 Promise静态四兄弟 在ES6中,Promise是一种用于异步编程的解决方案。Promise有两个状态:pending(等待)、fulfilled(已成功)和rejected(已失败)。一旦Promise状态改变为fulfilled或rejected,它就变成了不可变的。Promise有一些静态方法,其中四个方法称为…

    JavaScript 2023年5月27日
    00
  • js判断两个日期是否相等的方法

    JS判断两个日期是否相等的方法有多种实现方式,下面将分别介绍两种常用的方法: 方法一:将日期转为时间戳比较 将两个日期对象转化为时间戳(即毫秒数)后进行比较。 function compareDate(date1, date2) { return date1.getTime() === date2.getTime(); } 上述代码中,getTime() 方…

    JavaScript 2023年5月27日
    00
  • javascript中将Object转换为String函数代码 (json str)

    将JavaScript中的Object对象转换成字符串的过程叫做序列化,通常使用JSON.stringify()函数来进行转换。以下是完整的攻略: 1. 使用JSON.stringify()函数进行转换 JSON.stringify()函数将给定的JavaScript对象或值转换成一个JSON字符串。该函数接受三个参数: 要转换的值。 可选参数,替换方式,可…

    JavaScript 2023年5月27日
    00
  • Javascript的表单与验证-非空验证

    现在我来为您讲解一下“Javascript的表单与验证-非空验证”的完整攻略。 1. 标题 首先,我们需要为这篇攻略添加一个合适的标题,以便读者能够清楚地了解这篇攻略的主题。标题可以设为“Javascript表单验证-非空验证”。 2. 简介 在正式开始讲解“Javascript表单验证-非空验证”之前,我们先来简单介绍一下表单验证的概念及其重要性。 表单验…

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