web前端javascript数组去重
发布日期:2021-06-24 18:45:03 浏览次数:2 分类:技术文章

本文共 1093 字,大约阅读时间需要 3 分钟。

  hot3.png

前几日在做js-assessment时,发现其数组这一章里也有数组去重的这一问题:这个问题说起来十分简单,就是把数组中重复的元素去除。其实个人感觉数组去重问题实际上就是排序的升级版,目前开来最好的去重方法就是字典去重,这一点和排序中的基数排序不谋而合。下面就简单的说一说自己解决这个问题的思路。编写AOP时间函数对于解决数组去重算法的好坏,最终效率是第一位的,所以需要编写一个计算函数运行时间的切面函数。实现如下:Function.prototype.time = function() {    var t1 = +new Date()    ,   foo = this()    ,   t2 = +new Date()    return t2 - t1     //返回单位为毫秒}但是写完这个方法之后发现,对于要测试运行的函数而言,在进行测试之前不能够运行(即只能写成 foo.time() 的样子),这样就不能用普通传参的方法对其进行参数传递。突然想到了在前几日看到过prototypejs中的源码中有一个 bind 函数,其功能就在与给一个函数绑定特定上下文,且返回函数本身而不立即执行,于是就马上实现了这样一个函数,代码如下:Function.prototype.bind = function(ob) {    var fn = this    ,   slice = Array.prototype.slice    ,   args = slice.call(arguments, 1)    return function(){        return fn.apply(ob, args.concat(slice.apply(arguments)))    }   }写完这两个,我们就可以对测试函数进行运行时间计算,假如数组为 arr ,测试函数为 delrep ,则在实际操作中可以这样实现:delrep.bind(arr).time() (执行函数的同时输出运算时间)。双重循环去重在就去重方法讨论的文章中,愚人码头的文章里说到过这个方法,当然,作者本身也承认,这种双重for循环嵌套的方法在大数据量的情况下十分耗时。作者的源代码引用如下:Array.prototype.delRepeat=function(){    var newArray=new Array();    var len=this.length;    for (var i=0;i

转载于:https://my.oschina.net/parker/blog/161931

转载地址:https://blog.csdn.net/weixin_34248258/article/details/91837890 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:<设计模式>之<单一职责原则>
下一篇:Android APP卸载守护,双APP相互守护

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年03月31日 22时56分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章