JavaScript中数组去重的5种方法是什么

2023-11-03

数组去重的5种方法:
1、用“[…new Set(arr)]”语句去重;
2、用“Array.from(new Set(arr))”语句去重;
3、利用indexOf()去重;
4、利用includes()去重;
5、利用filter()去重。

数组去重的方法

1、[…new Set(arr)]

const arr = [1, 2, 3, 2, 3];

[...new Set(arr)]; // [1, 2, 3]

2、Array.from(new Set(arr))
加粗样式

const arr = [1, 2, 3, 2, 3];

Array.from(new Set(arr)); // [1, 2, 3]

由于 Set 中的元素是唯一的,无论是原始值或者是对象引用,所以可以通过将数组转换成 Set 对象来实现去重

Array.from方法可以将 Set 对象转换成数组

3、利用indexOf去重

function unique(arr) {
    var array = [];
    for (var i = 0; i < arr.length; i++) {
        if (array .indexOf(arr[i]) === -1) {
            array .push(arr[i])
        }
    }
    return array;
}

新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。

4、利用includes

function unique(arr) {
    var array =[];
    for(var i = 0; i < arr.length; i++) {
            if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
                    array.push(arr[i]);
              }
    }
    return array
}

5、利用filter

function unique(arr) {
  return arr.filter(function(item, index, arr) {
    //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
    return arr.indexOf(item, 0) === index;
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript中数组去重的5种方法是什么 的相关文章

  • 为任何更新查询增加 Mongoose 文档版本的简单方法?

    我想开始利用 Mongooses 文档版本控制 v key 我在实际增加版本值时遇到了问题 然后我发现您必须添加this increment 执行查询时 有没有办法自动递增 目前 我只是将其添加到pre用于更新类型查询的中间件 module
  • 如何打开新选项卡并更改当前页面

  • 检测单选按钮/复选框状态的变化

    我需要可靠地检测页面上单选按钮 复选框的状态变化 以便查看表单是否被修改 现在 这是一个完全独立的脚本 我无法修改任何控制表单的内容 目前 我只能看到两种方法 onchange事件处理程序 有助于处理文本框 文本区域和选择 但不会针对复选框
  • 在有限的上下文中运行 JS 代码

    我正在尝试奔跑trusted 隔离 上下文中的 JS 代码 基本上想出了这个方法 function limitedEval src context return function with this return eval src call
  • 使用 Ajax Jquery post 请求进行 Json 劫持

    昨天 我读了一些关于如何预防的好文章使用 Asp Net MVC 进行 Json 劫持 http haacked com archive 2009 06 24 json hijacking aspx 规则是 永远不要通过 get 请求发送
  • 获取被调用的 javascript 文件的查询字符串

    是否可以在调用的 javascript 文件上使用 javascript 获取查询参数 如下所示 in html in file js console log this location query 这是否可能以某种方式实现 或者我必须使用
  • 检测 Webkit/Chrome 中 HTML5 数字控件更改的事件?

    HTML5 为我们提供了一些新的输入元素 例如
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • 更新存储在 chrome 扩展本地存储中的对象

    我正在开发一个 chrome 扩展 我将存储服务器发送的对象 例如 我将收到 命令 id 1 类型 A 大小 B 优先级 C 如果我有一个数据库 我会将其作为表中的一行插入commands 使用 chrome storage 我将这些对象的
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • jQuery:将文本区域滚动到给定位置

    我有一个包含很多文本的文本区域
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • JavaScript 阶乘防止无穷大

    我一直在 JavaScript 中使用这个函数来计算阶乘数 var f function factorial n if n 0 n 1 return 1 if f n gt 0 return f n return f n factorial

随机推荐

  • 【理解系统】查看Linux系统信息

    一 发行版版本号 方法 1 cat etc issue Ubuntu 18 04 LTS n l 方法 2 红帽系 lsb release a LSB Version core 4 1 amd64 core 4 1 noarch Distr
  • 数据结构java版之大O表示法

    大O表示法使用大写字母O 可以认为其含义为 order of 大约是 我们可以使用大O法来描述线性查找使用了O N 级时间 二分查找使用了O log N 级时间 向一个无序数组中插入使用了O 1 或常数级时间 下面的图总结了算法的运行时间
  • TCP网络编程整理总结

    1 每一个TCP套机字中都存在I O缓冲 该缓冲在创建套接字的时候自动生产 2 即使关闭套接字 I O缓冲中输出缓冲的遗留的数据也会继续传输 3 关闭套接字会导致I O缓冲中输入缓冲中遗留的数据丢失 4 tcp数据包header中的seq表
  • 【深入浅出leveldb】文件类型与文件名

    深入浅出leveldb 文件类型与文件名 leveldb运行一段时间后 系统中会产生一些文件 这些文件有哪些 各个文件又有什么作用 文件名怎么命名的呢 本节来剖析这一块东东 代码在 db filename h db filename cc
  • emWin界面刷新

    1 在对话框回调函数中定时重绘按键 cbDialogHome WM MESSAGE pMsg Switch pMsg gt MsgId Case WM INIT DIALOG WM CreateTimer pMsg gt hWin 0 10
  • python 连接 hive

    我建了一个CentOS的虚拟机 为了验证python连接hive 首先 在服务器端除了安装hive 还需要做以下配置 1 配置当前用户的权限 到hadoop下面的 etc hadoop core site xml 2 配置客户端的权限 增加
  • R语言里面的lag()和diff()函数

    R里面的LAG只适用于时间序列 不适合于dataframe或者向量 因此需要自己写一个小小的函数来实现lag的功能 lagdf lt function x k c rep NA k x 1 length x y lt lagdf x 2 c
  • Cacheline技术浅析

    最近组内有个同事在做cacheline相关的特性 向其学习了一下 对原来的cacheline的理解更近了一步 这里总结一下 请彭超大侠有空的话帮忙在斧正一下 Cache就是对内存的内容进行缓存的一个硬件 cache和内存的逻辑关系结构如下图
  • vue项目中的视频直播插件

    所用插件vue video player 这是一款基于video js的视频播放器插件 插件的使用 安装 npm install vue video player save 全局引入 import Vue from vue import V
  • [NOIP]2004

    题目 链接 https ac nowcoder com acm contest 19859 P 题意 输入 3 10001011 输出 IBFBBBFIBFIIIFF 解析 题目所求 类似于建线段树 完全二叉树 叶子节点有2 n个 如果是叶
  • JAVA:List复制

    ArrayList的复制方法有几种 我们这边分别列出来 并且判断了更改复制的List会不会对原List有影响 初始List ArrayList
  • 测试及时通讯工具

    来自 51Testing软件测试论坛 测试像QQ那样的及时通讯工具 应该如何测试 参考答案 1 首先以核心功能为中心进行测试工作的部署 比如 关键功能或核心功能 收发等等 因为有可能联动一些其他辅助功能 事先进行规划部署 2 综合利用场景分
  • Java中的装包(装箱)和拆包(装包)

    装箱和拆箱 在Java的学习中 我们有的时候会设计装箱和拆箱的概念 也就是常说的装包和拆包 这篇博客将详细讲解一下装箱和拆箱的概念及其用途 装箱 装包 将基本数据类型转换成包装类类型 拆箱 拆包 将包装类类型转换成基本数据类型 装箱 注意
  • 2023年应届生招聘和薪酬管理

    导读 2023年高校毕业生春季招聘正在如火如荼开展 校招选拔 应届生起薪等话题成为企业近期关注的焦点 随着校招需求增加 企业表示招聘难度也有所加大 尤其是热门岗位 紧缺专业和优质生源的应届生 如何制定有吸引力的校招策略和有竞争力的应届生起薪
  • 博客地址 linlin.fun

    暂时不用csdn了 网络太慢了 csdn博客内容已经抓取到linlin fun
  • 基于springboot微服务项目的父工程、common模块的构建

    概述 以微服务项目的方式 对软件体系进行一个简单的探究 简略说明 为什么这样做 软件中这样做的原因是什么 结合一定的案例给出 父工程 对于父工程模块中重要的是其中的pom文件 在微服务体系下 不能够过多 比如在子模块中会自己引入的 就不要在
  • 最长滑雪道-蓝桥杯练习-python实现

    最长滑雪道 问题描述 小袁非常喜欢滑雪 因为滑雪很刺激 为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 小袁想知道在某个区域中最长的一个滑坡 区域由一个二维数组给出 数组的每个数字代表点的高度
  • FileZilla Server超详细配置

    FileZilla Server超详细配置 FileZilla Server下载安装完成后 必须启动软件进行设置 由于此软件是英文 本来就是一款陌生的软件 再加上英文 注 本站提供中文版本 请点击下载 配置难度可想而知 站长从网上找到一篇非
  • mac m2 编译dubbo3.1.x版本报Missing:com.google.protobuf:protoc:exe:osx-aarch_64

    原因是低版本的protobuf和grpc不支持MacBook m1或m2 protobuf 需要使用x86的protobuf 解决方法 1 单独修改configuration
  • JavaScript中数组去重的5种方法是什么

    数组去重的5种方法 1 用 new Set arr 语句去重 2 用 Array from new Set arr 语句去重 3 利用indexOf 去重 4 利用includes 去重 5 利用filter 去重 数组去重的方法 1 ne