JavaScript去重的方法
来源:互联网 发布:常见的网络拓扑结构有 编辑:程序博客网 时间:2024/04/30 08:06
-----------------------------------------------------1-----------------------------------------------
Array.prototype.unique=function(){var n[]; //一个新的临时数组for(var i=0;i<this.length;i++){ if(n.indexOf(this[i])==-1) //新的数组里面没有这个元素就把i位置的旧元素放进新数组 n.push(this[i]);}}-----------------------------------------------------2-----------------------------------------------
Array.prototype.unique=function(){var n{},r[]; //n为哈希表,r为临时数组for(var i=0;i<this.length;i++){ if(!n[this[i]]) { n[this[i]]=true; //把旧数组i位置的元素放入哈希表 r.push(this[i]); //把当前元素放进临时数组 }}}-----------------------------------------------------3-----------------------------------------------
Array.prototype.unique=function(){var n=[this[0]]; //新数组,先放入旧数组的第一个元素for(var i=1;i<this.length;i++) //从第二项开始遍历{ if(this.indexOf(this[i])==i) //就像1,5,7,5 第一个5在index==1时出现,满足this.indexOf(this[1])==1, //而第二个5,this.indexOf(this[3])== 1 !=3 n.push(this[i]);}}-----------------------------------------------------4-----------------------------------------------
Array.prototype.unique=function(){this.sort(); //对数组进行排序var re=[this[0]]; //新数组,先放入旧数组的第一个元素for(var i = 1; i < this.length; i++) //从第二项开始遍历{if( this[i] !== re[re.length-1]) //比较相邻的两个值{re.push(this[i]); }}return re;}其中第1种和第3种方法都用到了数组的indexOf方法。此方法的目的是寻找存入参数在数组中第一次出现的位置。很显然,js引擎在实现这个方法的时候会遍历数组直到找到目标为止。所以此函数会浪费掉很多时间。 而第2中方法用的是hash表。把已经出现过的通过下标的形式存入一个object内。下标的引用要比用indexOf搜索数组快的多。但是内存占用方面应该第二种方法比较多,因为多了一个hash表。这就是所谓的空间换时间。第四种方法运行时间平均是第二种方法的三倍左右,不过比第一种和第三种方法快了不少。
转自:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 点击打开链接
0 0
- JavaScript去重的方法
- JavaScript 数组去重的常见方法!
- JavaScript数组去重的原型方法
- javascript数组去重方法
- javascript数组去重方法。
- javascript数组去重方法
- JavaScript数组去重方法
- javascript 数组去重的几种方法
- javascript数组去重的三种常用方法总结
- [JavaScript/JQuery] js数组去重的4个方法
- javascript数组去重的三种常用方法总结
- javascript数组去重的四种方法
- JavaScript数组去重的6个方法
- JavaScript数组去重的6个方法
- javascript中数组去重的五种方法
- JavaScript数组去重的几种方法
- JavaScript数组去重的几种方法效率测试
- JavaScript 数组去重的四种方法
- bz3629
- java.util.Scanner应用详解--阿冬专栏
- Reverse Iterators(逆向迭代器)
- Github初学者探索
- 获取其他APP中素材
- JavaScript去重的方法
- Windows10激活密钥常用命令
- 编译mini2440的crosstool-NG和全志A20的Linux BSP(Buildroot)的心得
- GDB常用命令
- Android强大的图片加载框架Fresco简单用法
- Postgresql 分区表测试
- Struts2学习
- qt做计算器时的想法
- 线性结构