js 数组去重的四种实用方法

yizhihongxing

下面是“js 数组去重的四种实用方法”的完整攻略:

一、使用 Set 数据结构

ES6 中提供了 Set 数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们可以利用 Set 数据结构去重。

示例代码如下:

let arr = [1, 2, 3, 2, 1];
let set = new Set(arr);  //set {1, 2, 3}
let newArr = Array.from(set);    // [1, 2, 3]

通过 Set 的构造函数,我们将 arr 转换为 set,然后通过 Array.from 方法将 set 转换为数组,得到的 newArr 就是去重后的数组。

二、利用 indexOf 判断元素是否存在

对于一个值已知的数组,我们可以利用 indexOf 方法判断该元素是否已经存在于新的数组中,如果不存在则将其添加进去。

示例代码如下:

function uniq(array){
    let temp = [];
    for(let i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) === -1){
            temp.push(array[i]);
        }
    }
    return temp;
}

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

我们定义了一个 uniq 函数,利用 for 循环遍历原数组,然后通过 indexOf 方法判断该元素是否已经存在于新数组 temp 中,不存在就将其添加到 temp 中,最后返回 temp。

三、利用 filter 方法

我们可以利用 filter 方法遍历原数组,返回符合指定条件的元素组成的新数组。

示例代码如下:

function uniq(array){
    let newArray = array.filter((element, index, self) => {
        return self.indexOf(element) === index;
    });
    return newArray;
}

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

我们定义了一个 uniq 函数,利用 filter 方法遍历原数组,返回符合指定条件的元素组成的新数组,其中指定的条件是元素在原数组中的位置等于其在新数组中的位置。

四、利用 Map 数据结构

我们还可以利用 Map 数据结构来进行数组去重。与 Set 类似,Map 也可以用来过滤重复的数组元素。

示例代码如下:

function uniq(array){
    let map = new Map();
    let newArray = [];
    for(let i = 0; i < array.length; i++){
        if(map.has(array[i])){
            map.set(array[i], true);    
        } else {
            map.set(array[i], false);   
            newArray.push(array[i]);
        }
    }
    return newArray;
}

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

我们定义了一个 uniq 函数,利用 for 循环遍历数组,利用 Map 判断该元素是否已经存在于新数组中,如果已经存在,则将该元素的 key 值设为 true,否则将该元素的 key 值设为 false,并将该元素添加到新数组中。最后返回新数组。

以上就是“js 数组去重的四种实用方法”的完整攻略,希望能对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 数组去重的四种实用方法 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 静态IP、固定IP的路由器上网设置图文教程

    静态IP、固定IP的路由器上网设置图文教程 本教程将详细介绍如何在路由器上进行静态IP或固定IP的设置,以实现稳定的网络连接。以下是完整的攻略: 步骤一:登录路由器管理界面 打开您的浏览器,输入路由器的默认IP地址(通常为192.168.1.1或192.168.0.1)。 输入管理员用户名和密码登录路由器管理界面。如果您没有更改过默认凭据,可以在路由器的用户…

    other 2023年7月30日
    00
  • Win7系统的快捷键大全 Win7键盘快捷键汇总

    《Win7系统的快捷键大全 Win7键盘快捷键汇总》是一篇介绍Windows 7系统快捷键的文章,下面是它的完整攻略: 引言 在 Windows 7系统 中,快捷键是提高操作效率的一种最简单又最有效的方式。如果您掌握了 Windows 7系统 的常用快捷键,不仅可以让您的工作更加高效,还可以改善您的操作体验。本篇文章将为您介绍 Windows 7系统 的常用…

    other 2023年6月27日
    00
  • 怎么处理windows登录弹出不能加载本地存储文件?

    如果在Windows登录过程中出现“不能加载本地存储文件”的弹出窗口,这可能是由于本地存储文件已经损坏或被删除所致。解决此问题,有以下步骤: 1. 检查磁盘错误和修复文件系统 首先,我们需要检查和修复磁盘错误。可以使用Windows自带的磁盘检查工具,具体步骤如下: 打开文件资源管理器,右键单击需要检查的驱动器,选择“属性”。 在“工具”选项卡下,单击“检查…

    other 2023年6月25日
    00
  • 易语言实现快捷登录查询Q币消费记录的代码

    易语言实现快捷登录查询Q币消费记录的代码攻略 1. 简介 在这个攻略中,我们将使用易语言编写一个程序,实现快捷登录并查询Q币消费记录的功能。我们将使用易语言的图形界面设计和数据库操作功能来完成这个任务。 2. 准备工作 在开始编写代码之前,我们需要确保已经安装了易语言开发环境,并且熟悉易语言的基本语法和图形界面设计。 3. 创建界面 首先,我们需要创建一个图…

    other 2023年7月29日
    00
  • Kotlin Fragment的具体使用详解

    Kotlin Fragment的具体使用详解 在Android开发中,Fragment是一种可以嵌入到Activity中的组件,用于实现模块化和可重用的界面。Kotlin Fragment是使用Kotlin语言编写的Fragment,它提供了更简洁、安全和易用的方式来创建和管理Fragment。 创建Kotlin Fragment 要创建一个Kotlin F…

    other 2023年9月6日
    00
  • Linux下使用ip netns命令进行网口的隔离和配置ip地址

    在Linux下使用ip netns命令进行网口的隔离和配置IP地址攻略 1. 创建网络命名空间 首先,我们需要创建一个网络命名空间,用于隔离网络接口和IP地址配置。可以使用以下命令创建一个名为ns1的网络命名空间: sudo ip netns add ns1 2. 创建虚拟网桥 接下来,我们需要创建一个虚拟网桥,用于连接网络命名空间和物理网络。可以使用以下命…

    other 2023年7月30日
    00
  • Linux系统如何安装和使用shell编写的工具supportconfig

    以下是安装和使用shell编写的工具supportconfig的详细攻略: 安装supportconfig工具 打开终端或命令行界面。 使用包管理器(如apt、yum或zypper)安装supportconfig工具。以下是几个常用Linux发行版的安装命令示例: Ubuntu/Debian: sudo apt-get install supportconf…

    other 2023年10月16日
    00
  • 在ASP.NET 2.0中操作数据之三十二:数据控件的嵌套

    数据控件的嵌套是ASP.NET中常用的一种数据绑定方式。通过在一个控件的ItemTemplate或EditItemTemplate中嵌套一个或多个数据控件,可以实现对不同类型数据的同时编辑和显示。本文将通过示例详细讲解数据控件的嵌套。 一、实例说明 1. 实例一:GridView控件中嵌套DetailsView控件 GridView控件中嵌套DetailsV…

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