当前位置:首页 > 编程技术 > 正文内容

JS 数组去重的多种方法

yc8881年前 (2022-12-03)编程技术270

JS 数组去重的多种方法

  • 1. 前言

  • 2. 普通方法数组去重

  • 3. filter + indexOf

  • 4. ES6 的 new Set()

  • 5. 需要注意的问题

    1. 前言


    本文提供两个数组变量供测试使用

    const array = ['html', 'css', 'js', 'css']const resArr = ['html', 'css', 'css', [1], [1]]

    2. 普通方法数组去重


    下面列举几种数组去重的方法思路都一样:

    遍历数组,将数组元素添加到新数组中,新数据中已有该元素,则不添加到新数组

    // for + indexOfconst res = [];for (let index = 0; index < array.length; index++) {    res.indexOf(array[index]) === -1 && res.push(array[index])}// forEach + indexOfconst res = [];array.forEach(item => {    res.indexOf(item) === -1 && res.push(item)})// reduce + includesconst res = array.reduce((total, item) => {    !total.includes(item) && total.push(item)    return total;}, [])

    3. filter + indexOf


    使用 filter + indexOf 的方式可以使代码变为更简洁

    filter() 方法过滤数组,只保留满足条件的元素。indexOf() 方法判断元素首次出现的下标是否为当前遍历的下标

    // ['html', 'css', 'js']const res = array.filter((item, index) => array.indexOf(item) === index)

    4. ES6 的 new Set()


    利用 Set 结构不能接收重复数据的特点源码下载

    const res = [...new Set(array)]

    5. 需要注意的问题


    当数组中存在引用类型的元素时,引用类型元素无法保持唯一性

    const resArr = ['html', 'css', 'css', [1], [1]]// ['html', 'css', 'css', [1], [1]]const res = resArr.filter((item, index) => resArr.indexOf(item) === index)


    本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


    从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


    本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


    本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


    若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


    本文链接:https://www.10zhan.com/biancheng/10161.html

    标签: JS
    分享给朋友:

    “JS 数组去重的多种方法” 的相关文章

    【说站】laravel实现自定义404页面并给页面传值

    【说站】laravel实现自定义404页面并给页面传值

    以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

    【说站】Thymeleaf报错Error resolving template “XXX”

    【说站】Thymeleaf报错Error resolving template “XXX”

    修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

    【说站】利用Webhook实现Java项目自动化部署

    【说站】利用Webhook实现Java项目自动化部署

    用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

    【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

    【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

    PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

    【说站】Java从resources读取文件内容的方法有哪些

    【说站】Java从resources读取文件内容的方法有哪些

    本文主要介绍的是java读取resource目录下文件的方法,比如这是你的src目录的结构├── main│ ├── java│ │ └── ...

    【说站】使用systemctl配置dnspod-shell实现ddns

    【说站】使用systemctl配置dnspod-shell实现ddns

    这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...