js数组去重常见的方法汇总(7种)

下面我将详细讲解“js数组去重常见的方法汇总(7种)”。

一、引言

在JavaScript的实际开发中,经常会遇到需要对数组进行去重操作的情况。而JavaScript提供了多种方法来进行数组去重操作,下面将详细介绍七种常见的方法。

二、使用Set

Set是ES6新引入的一种集合数据类型,它可以存储任意类型的唯一值。使用Set可以很方便地实现数组去重,只需要将数组转化成Set对象,然后再转化回数组即可。

示例代码如下:

let arr = [1, 2, 3, 2, 1];
let set = new Set(arr); //创建Set
let newArr = Array.from(set); //将Set转为数组

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

三、使用indexOf

利用indexOf方法来判断一个元素在数组中是否存在,可以很方便地实现数组去重。

示例代码如下:

let arr = [1, 2, 3, 2, 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]

四、使用includes

includes方法是ES7引入的新方法,用来判断一个数组是否包含某个元素。利用它也可以实现数组去重。

示例代码如下:

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

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

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

五、使用filter

使用filter可以很方便地筛选出数组中符合条件的元素,利用这一特性也可以实现数组去重。

示例代码如下:

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

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

六、使用reduce

使用reduce可以很方便地将数组中的元素逐个累加,并返回一个值。结合indexOf方法也可以实现数组去重。

示例代码如下:

let arr = [1, 2, 3, 2, 1];
let newArr = arr.reduce((prev, cur) => {
    if(prev.indexOf(cur) === -1){
        prev.push(cur);
    }
    return prev;
}, []);

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

七、使用Map

Map也可以用来实现数组去重,它类似于Set,但是可以自定义键值对,因此更加灵活。

示例代码如下:

let arr = [1, 2, 3, 2, 1];
let map = new Map();
let newArr = [];

for(let i = 0; i < arr.length; i++){
    if(!map.has(arr[i])){
        map.set(arr[i], true);
        newArr.push(arr[i]);
    }
}

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

结束语

以上便是js数组去重常见的七种方法汇总。在实际开发中,我们可以根据具体业务需求和数组长度等因素来选择适合的去重方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js数组去重常见的方法汇总(7种) - Python技术站

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

相关文章

  • JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题

    闭包是一个有趣且常见的概念,在JavaScript中被广泛使用。可以使用闭包来解决JavaScript中的一些问题,比如变量作用域的限制和访问外部变量的限制。其中,一个重要的应用就是解决只能取得包含函数中任何变量最后一个值的问题。 什么是闭包 在JavaScript中,闭包是指能够访问自由变量的函数,即一个定义在函数内部的函数。闭包可以访问外部函数中的变量和…

    JavaScript 2023年6月10日
    00
  • 详解在Javascript中进行面向切面编程

    下面我将详细讲解在Javascript中进行面向切面编程的完整攻略。 什么是面向切面编程 在介绍如何在Javascript中进行面向切面编程之前,我们先来了解一下什么是面向切面编程(Aspect-Oriented Programming,简称AOP)。 AOP是一种编程思想,它可以对横跨多个模块的代码进行集中式管理。在AOP中,我们可以通过切面来描述一个横跨…

    JavaScript 2023年5月18日
    00
  • 常见JS验证脚本汇总

    “常见JS验证脚本汇总”是一篇介绍JavaScript验证脚本的文章。JavaScript验证脚本用来验证表单输入的内容是否符合预期,可以提高表单的准确性和安全性。以下是详细的攻略: 标题 介绍 在介绍JavaScript验证脚本之前,需要先了解HTML表单的基本结构和form元素的常见属性。 JavaScript验证脚本的基本结构 JavaScript验证…

    JavaScript 2023年6月10日
    00
  • axios学习教程全攻略

    axios学习教程全攻略 本教程旨在为初学者提供一份完整的axios学习攻略,帮助初学者了解并学会使用axios来完成前端的网络请求。 什么是axios Axios是一个基于Promise的HTTP客户端库,可以用于浏览器和Node.js中对http请求进行处理。axios的最大特点是支持链式调用和拦截器,同时使用简单方便,适合在项目中进行网络请求。 安装a…

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

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

    JavaScript 2023年6月11日
    00
  • js异步加载的三种解决方案

    下面开始讲解“js异步加载的三种解决方案”。 异步加载的概念 在前端开发中,为了提高网页加载速度和用户体验,我们常常需要异步加载页面元素或脚本。常见的异步加载方式有三种,分别是:动态添加script标签、使用XMLHttpRequest请求和使用WebWorkers。 动态添加script标签 动态添加script标签是最常用的异步加载方式之一,它的原理是通…

    JavaScript 2023年5月28日
    00
  • javascript学习笔记(十一) 正则表达式介绍

    下面我来详细讲解一下“JavaScript学习笔记(十一) 正则表达式介绍”的完整攻略。 正则表达式介绍 什么是正则表达式 正则表达式 (Regular Expression) 是一种通过编写规则来描述字符串特征的方法。通常用来匹配、查找、替换字符串中的特定字符或模式,可以让我们更方便地对文本进行处理。 正则表达式的基本语法 正则表达式由一组字符和特殊符号组…

    JavaScript 2023年6月10日
    00
  • JavaScript日期对象(Date)基本用法示例

    来了解一下JavaScript日期对象(Date)的基本用法吧! 什么是JavaScript日期对象(Date) JavaScript日期对象(Date)是JavaScript内置对象,用于处理与日期和时间相关的信息。我们可以使用JavaScript日期对象(Date)来获取当前时间、日期、计算时间间隔、格式化日期时间等。 创建JavaScript日期对象(…

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