位置: 编程技术 - 正文

JavaScript学习笔记之数组去重(javascript如何学)

编辑:rootadmin

推荐整理分享JavaScript学习笔记之数组去重(javascript如何学),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript怎么学,javascript教程完整版,javascript基础笔记,javascript基础笔记,javascript教程推荐知乎,javascript教程推荐知乎,javascript学习指南,javascript教程推荐知乎,内容如对您有帮助,希望把文章链接给更多的朋友!

推荐阅读:JavaScript学习笔记之数组的增、删、改、查

JavaScript学习笔记之数组求和方法

JavaScript学习笔记之数组随机排序

话说面试常会碰到面试官会问JavaScript实现数组去重的问题,最近刚好在学习有关于JavaScript数组相关的知识,趁此机会整理了一些有关于JavaScript数组去重的方法。

下面这些数组去重的方法是自己收集和整理的,如有不对希望指正文中不对之处。

双重循环去重

这个方法使用了两个for循环做遍历。整个思路是:

构建一个空数组用来存放去重后的数组

外面的for循环对原数组做遍历,每次从数组中取出一个元素与结果数组做对比如果原数组取出的元素与结果数组元素相同,则跳出循环;反之则将其存放到结果数组中

代码如下:

假设我们有一个这样的数组:

据说这种方法比较耗时,费性能。简单做个测试(测试方法写得比较拙逼):

在Chrome控制器运行上面的代码,测试双重循环去重所费时间:ms。

上面的方法可以使用forEach()方法和indexOf()方法模拟实现:

通过unique1.apply(arr)或unique1.call(arr)调用。不过这种方法效率要快得多,同样的上面测试代码,所费时间ms,几乎快了一半。

排序遍历去重

先使用sort()方法对原数组做一个排序,排完序之后对数组做遍历,并且检查数组中的第i个元素与结果数组中最后一个元素是否相同。如果不同,则将元素放到结果数组中。

例如:

这种方法有两个特色:

去重后的数组会做排序,主要是因为原数在去重前做了排序

JavaScript学习笔记之数组去重(javascript如何学)

去重后的数组,与数字相同的数字字符无法区分,比如'1'和1

使用同样的方法,测试所费时间:ms。

对象键值对法

这种去重方法实现思路是:

创建一个JavaScript对象以及新数组

使用for循环遍历原数组,每次取出一个元素与JavaScript对象的键做对比

如果不包含,将存入对象的元素的值推入到结果数组中,并且将存入object对象中该属性名的值设置为1

代码如下:

运行前面的示例:

同样的,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。这种方法所费时间:ms。 这种方法所费时间是最短,但就是占用内存大一些。

除了上面几种方法,还有其他几种方法如下:

Chrome测试结果

同样的,1和'1'无法区分。

Chrome测试结果:

同样的,类似于1和'1'无法区分。所费时间:ms。

测试结果如下:

所费时间:ms。

测试结果:

所费时间:ms。

方法虽然很多种,但相比下来,下面这种方法是较为优秀的方案:

但在ES6去重还有更简单,更优化的方案,比如:

以上所述是小编给大家介绍的JavaScript学习笔记之数组去重,希望对大家有所帮助!

JavaScript学习笔记之取数组中最大值和最小值 推荐阅读:JavaScript学习笔记之数组的增、删、改、查JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组随机排序在实际业务中有的时候要取出数

JS随机洗牌算法之数组随机排序 推荐阅读:JavaScript学习笔记之数组的增、删、改、查JavaScript学习笔记之数组求和方法JavaScript学习笔记之数组随机排序洗牌算法是一个比较形象的术语

JavaScript弹出对话框的三种方式 学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法、prompt()方法、prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的

标签: javascript如何学

本文链接地址:https://www.jiuchutong.com/biancheng/375938.html 转载请保留说明!

上一篇:JavaScript学习笔记之数组随机排序(javascript教程完整版)

下一篇:JavaScript学习笔记之取数组中最大值和最小值(javascript要怎么学)

  • 房产公司预缴土地增值税怎么做账
  • 企业技术转让享受税收优惠政策应符合哪些条件
  • 增值税专用发票有效期是多长时间
  • 投资收益转入资本公积
  • 收益性支出包括哪些内容
  • 电子汇票提示付款撤销
  • 电子承兑对方拒绝签收
  • 会计哪些账本需要保存
  • 收购票怎么做会计分录
  • 软件和硬件可以用什么代名词
  • 公司之间房产过户免税条件
  • 外企农业公司
  • 一般纳税人转登记为小规模纳税人
  • 一般纳税人企业所得税政策最新2023税率
  • 包装物押金会计分录怎么做
  • 公司收到一张专用发票
  • 没有预收账款应该用什么科目核算
  • 进口内销是什么意思
  • 单位食堂油烟管道清洗记录表
  • 发票冲销后还能用吗
  • 资产负债表的编制时间
  • 收到客户样衣定做款会计科目是什么?
  • 房地产企业增值税预缴
  • 有限责任公司(自然人投资或控股)属于什么经济类型
  • 地下商铺出售产权归属
  • 递延所得税收益计算公式
  • 电子发票作废怎么做
  • 补缴房产税需要什么资料
  • php代码生成器
  • 怀特岛郡国旗
  • 入库前仓储费用应计入
  • 财产保险公司手续费税前扣除最新
  • 瓦尔德内尔精彩
  • 前端向后端传值的函数
  • 印花税怎么计提和结转
  • 1.启动前端项目怎么做
  • 收到无法支付的押金收入
  • php如何调用类
  • thinkphp登录
  • 车间的办公费计入
  • centos 安装php
  • 手把手教你实现用户登录界
  • 营改增抵减的销项税发票要抵扣吗
  • 企业取得交易性金融资产时
  • meta最新模型
  • css deep深度选择器
  • 研发支出放在资产负债表哪里
  • 发票开具的常见错误以及盖章问题
  • 费用报销单票据怎么填
  • 包工包料意思
  • 电子承兑汇票贴现怎么做账
  • 应收款为负数怎么理解这个概念
  • 固定资产减值准备可以转回吗
  • 企业所得税退回应交税费会计分录
  • 利息收入计入科目
  • 增值税进项税没抵扣
  • 预缴增值税的账务处理
  • 劳务派遣人员的档案会保存在用人单位吗
  • 自产产品用于业务招待费
  • 原材料出库怎么做分录
  • 企业自查发现以什么为主
  • 差旅费住宿专票可以抵扣增值税吗
  • 主营业务成本暂估怎么算
  • 银行存款利息收入要交税吗
  • 扣除员工餐费怎么做分录
  • 库存商品坏账准备怎么算
  • 固定资产折旧计入什么费用
  • 存货期末报表列示
  • 远程管理是什么意思
  • win10 server2008
  • freebsd查看硬盘信息
  • 标签windows
  • 如何配置centos7的ip地址
  • window八
  • win8系统升级win8.1
  • [置顶]游戏名:chivalry2
  • 云南发票网站
  • 建设工程造价咨询合同需要交印花税吗
  • 临汾的公司需要交社保吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设