位置: 编程技术 - 正文

详解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号天蝎座的运势)

  • 小规模拍卖公司佣金怎么交税
  • 外贸公司报关员是干什么的
  • 收到的其他与筹资活动有关的现金包括
  • 目前在建工程一览表
  • 接受捐赠的增值税计入利润总额吗
  • 退休人员基本养老金调整幅度需要综合考虑什么因素
  • 公司持有的房产税
  • 企业法人股东向个人借款能起诉查封公司财产吗
  • 个人所得税返还奖励财务人员做账
  • 企业自建房是什么意思
  • 出口发票开具注意事项及要求有哪些?
  • 所得税会计核算要点及程序
  • 付敏科技有限公司官网
  • 开户许可证怎么下载电子版
  • 企业发生的以旧换新业务应该按照什么处理
  • 补贴收入是否缴税
  • 纳税信用等级是自动判定吗
  • 怎么做汇算清缴报表
  • 斐讯p.to路由器管理员密码
  • 开机提示lsass应用程序出错
  • 新准则待摊费用
  • php自定义变量
  • 2020工资计税基数怎么算
  • 股权转让合同怎么解除
  • 公司转让固定资产要交税吗
  • 母子公司吸收合并税务处理
  • 销售滞后税务处理
  • 工业企业出租房屋的租金收入应计入
  • 收回前欠货款会导致资产总额减少吗
  • 税金及附加在哪里申报
  • 浏览器你
  • 讯飞智能x2
  • php读取文件内容的方法和函数
  • phpcms建站流程
  • 定额发票在哪查真伪
  • 确认递延所得税负债的分录
  • 土地增值税采用
  • 银行日记账错误更正案例
  • vue was assigned to but
  • java查询mongodb数据
  • 担保公司代偿会上征信嘛
  • 年度财务报告和年度报告
  • 小微企业金融免税政策
  • 权益性投资收益按照什么确认收入的实现
  • 应付职工薪酬如何结转
  • 折扣折让红字发票
  • 为什么其他权益工具投资处置价差计留存收益
  • 施工单位结算
  • 报关代理费进成本吗
  • 跨年暂估成本会计分录
  • 公司购买的办公楼怎么交房产税
  • 定额发票的使用方法
  • 管理费用属于什么成本
  • 总公司和分公司企业所得税分配
  • 哪些单位需要缴纳残疾人保障金
  • 生育津贴申请流程
  • 模具的生产工艺流程
  • ddl dml的区别
  • 查找非空顺序表l中第一个最大的元素
  • mysql理论知识
  • 如何用win7
  • win10设置怎么开
  • win功能下载所需文件
  • xp怎么隐藏运行的程序
  • winxp系统介绍
  • 彻底删除ubuntu系统
  • 盗版win7怎么升级
  • 选择打开程序
  • linux安装jdk和tomcat
  • cocos2dx4.0入门
  • uinty实现玩家跟随鼠标位置平滑旋转角度
  • 置顶聊天的人怎么不见了
  • jQuery 实现ajax传入参数含有特殊字符的方法总结
  • javascript面向对象编程指南第三版
  • jquery实战
  • jquery中的children
  • 养老专业在职研究生好吗
  • 中国税务报订阅电话
  • 四川税务专管员查询
  • 税务宣传标语2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设