位置: 编程技术 - 正文

详解javascript数组去重问题(javascript数学函数)

编辑:rootadmin

推荐整理分享详解javascript数组去重问题(javascript数学函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript 数字类型,javascriptcsdn,javascript 数值计算,javascript数组操作方法,javascript数组操作方法,javascript数组操作方法,javascript 数字,javascript 数字,内容如对您有帮助,希望把文章链接给更多的朋友!

首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据。遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复。于是乎,我写出了如下代码A:

写完之后,忽然想起来前几天刚看的ECMAScript 5中的数组方法indexOf 可以检索数组元素。于是我又使用indexOf 方法替代了第二层循环,写出了如下代码B:

详解javascript数组去重问题(javascript数学函数)

代码一下子从行变成了9行了,简洁多了。高三数学大题解法一般都不止一种的啊,然后我就继续再想其他方法了。indexOf 方法的意思是搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引,没有找到就返回 -1 ,第一个参数就是要搜索的值,第二个参数可选:它指定数组中的一个索引,从那里开始搜索,如果省略这个参数,则从头搜索。思维一发散,想到了前面方法都是检测值是否重复的,现在有了indexOf 方法不就可以根据检测到的每个元素的第一次出现时的索引和这个元素自身的索引值比较相等来判断是否重复嘛。所以,我又写出了代码C:

写完这个,又继续想了想,实在是想不出其他方法了,这三个方法都是很基础的方法。于是,我就去对照答案,检验自己了。一看答案,发现自己还是真实太弱了,简单的问题还是有些奇思妙想的。下面不是自己想的了,就不再说太多我的心路历程了。废话不多说,直接上经典的答案+解析了。首先,先说一个算法中经常说的以空间换时间的解法,保持队形,我们就叫它代码D吧:

这个方法中在遍历原始数组时用一个对象 obj 的属性来保存原始数组中元素的值。同时这个属性的值是一个数组,用来存储这个属性的类型,这一点可以把原始数组中类似数字1元素和字符串‘1'的元素区分开。这个方法通过额外构建一个对象的方式降低了上面三种方法中indexOf方法所花费的时间,可以说较为高效吧。如果你已经满足于上面所说的以空间换时间的高效方法而不继续看下去的话,那就大错特错了,好戏总在后头嘛。现在好戏开场,毫无疑问,就是代码E了:

代码D以空间换时间,感觉也就一般般。那么代码E呢?这代码是错误的吧,这个真的能去重吗?是的,起初我都没看懂这代码,看了解析后又看了一遍之后才明白过来。那么,没看懂的看官也要认真的看解析了:第一层从前往后遍历原始数组,第二层循环是检测每个元素是否跟它之后的元素重复,如果它之后有重复元素则跳过它;如果这个元素之后所有元素都跟他不重复了,则把它添加到结果数组中。这个方法实现思路就是:获取无重复的最右一值添加到结果数组中,这个跟第一种方法相比也优化了第二层的循环,效率要比它高,不过这个方法的结果数组中元素的顺序跟原始数组中元素的顺序不一样了。

看完了代码E解析的你是不是已经伸出了大拇指、投放出了敬佩的目光呢?(这些鲜花和荣誉别给我,应该给写这个方法的大神去)。下面再说最后一个方法:那就是先排序,再去重。老规矩,它叫代码F:

这个先用数组的排序方法sort进行数组元素排序,然后再进行去重工作。

标签: javascript数学函数

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

上一篇:基于JavaScript实现仿京东图片轮播效果(基于javascript的毕业设计)

下一篇:js识别uc浏览器的代码(22号天蝎座的运势)

  • 企业增值税是什么科目
  • 土地价款抵扣增值税怎么做账
  • 年报后 申报报表年初数会调整吗
  • 应收账款核销的会计处理
  • 交易性金融资产的账务处理
  • 机器配件作价卖掉,如何做进项税转出
  • 供应商发出货物,将发货单提交给
  • 财政局专利补助政策
  • 车间报销费用的会计分录
  • 给员工发结婚礼金怎么说
  • 技术服务结转成本的会计分录
  • 招聘发票可以抵扣吗
  • 年末会计做账怎样少交企业所得税呢?
  • 2020年税收分类编码定义查询
  • 计提企业所得税会计分录怎么做
  • 产权转移书据有哪些
  • 视同销售收入和成本如何确认
  • 无偿提供服务需要交增值税吗
  • 中药材免税还能抵扣收购发票
  • 借主营业务成本贷应付账款
  • 可全额扣除的公益性捐赠支出
  • 餐饮充值赠送
  • 股权和投票权的关系是什么关系
  • 内含报酬率概念
  • linux中free命令详解
  • mac10.10.5系统
  • 招待客户住宿的句子
  • 开增值税专用发票必须走公账吗
  • PHP:pg_send_prepare()的用法_PostgreSQL函数
  • 路由器增强型
  • php 编程
  • 常用的php操作mysql的函数有哪些
  • php each list
  • Calanques de Piana岩层上的一个心形洞,法国科西嘉岛 (© joningall/Getty Images)
  • php静态方法和非静态方法
  • 公章没有数字是什么情况
  • 前后端分离弊端
  • 我用ChatGPT做直播技术选型,卷死了同事
  • 建行企业网上银行主管盾权限分配
  • 爱上源码,重学Spring IoC深入
  • 厂房和设备折旧年限
  • 公务交通通讯补贴
  • 种植中药材公司取名字大全
  • 信用证支付方式,银行处理单据时主要关注( )
  • 印花税核定征收比例取消了吗
  • 备用金有发票抵扣吗
  • 发票已抵扣但对方要红冲账务处理
  • 计提资产减值准备时,借记的科目是
  • 开红字发票需要做收回原发票吗?
  • 临时工工资应计入什么科目
  • 水利建设基金计提会计分录
  • 运输公司赔偿账务处理
  • 预付账款和其他应付款的区别
  • 税控维护费是什么意思
  • 向其他公司投资专利账务处理
  • 会计里计提是什么意思
  • 个人承担的个税会计分录
  • 跨行收报属于什么科目
  • 停薪留职社保怎么算
  • mysql优化表命令
  • 猛料高手
  • win7旗舰版系统还原无法启动
  • windowsp.exe - windowsp是什么进程
  • win8系统崩溃怎么办
  • Windows10 Redstone首个预览版即将发布 开始推送全新的预览分支
  • win10系统资源管理器怎么重新安装
  • ie11 for win8
  • android图形系统
  • linux怎么调用python
  • linux怎样过滤一个关键字
  • 中间件 .net
  • centos6安装python
  • node.js和ajax的顺序
  • node基础知识
  • javascript基础教程pdf下载
  • javascript学习指南
  • 申报参保时间怎么填
  • 代扣代缴企业所得税会计分录
  • 企业对税务局建议
  • 税法上接受捐赠是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设