精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-03
hyj1254 写道 结论: 这种写法也能处理除字符串外的其他数据。。 也没有破坏顺序。 但最后一条确实是那样的,会枚举原型链属性,需要使用hasOwnProperty。 试试这个就知道了: [{a:1}, {b:1}, "[object Object]"] |
|
返回顶楼 | |
发表时间:2010-12-03
[{a:1}, {b:1}, "[object Object]"] 这个确实是,都成[object Object]了。 |
|
返回顶楼 | |
发表时间:2010-12-03
好像一些方法的调用都是不用时间的,所以不会被记录在O(n)中,比如说Array.splice……
|
|
返回顶楼 | |
发表时间:2010-12-05
hyj1254 写道 我也来一个:
var array=[1,1,2,2,3,3]; var newArry=[]; for(var x in array){ newArry[array[x]]=""; } for(var y in newArry){ alert(y); } 这种方法,我也用过,但是在for(var y in newArry)这样遍历的时候,多出了indeOf和另外一个(忘记是什么了),不知道是什么原因,当时没太去管,谁能解释一下? |
|
返回顶楼 | |
发表时间:2010-12-06
引用 但是在for(var y in newArry)这样遍历的时候,多出了indeOf和另外一个
这个应该是把prototype中的属性或方法给读出来了。参考下前面的讨论。 |
|
返回顶楼 | |
发表时间:2010-12-06
cai3178940 写道 hyj1254 写道 楼上的方法不错,但最好修改下,呵呵:
var array=[2.3,2.3,"a","b","b",true,true,true,false,1,0,undefined,null]; for(var i=0;i<array.length;i++){ for(var j=i+1;j<array.length;j++){ if(array[j]===array[i]) { array.splice(j,1); j--; } } } alert(array); 嗯,的确是这么回事,之前没注意,谢谢楼上 false后面的项全部丢失,求解? |
|
返回顶楼 | |
发表时间:2010-12-06
最后修改:2010-12-06
var array=[false,undefined,null]; alert(array); 引用 false后面的项全部丢失
|
|
返回顶楼 | |
发表时间:2010-12-06
最后修改:2010-12-06
hyj1254 写道 var array=[false,undefined,null]; alert(array); 引用 false后面的项全部丢失
不好意思,我上的一段代码里面看错了,把===写成了==,呵呵! |
|
返回顶楼 | |
发表时间:2010-12-07
(function($) {
$.extend($, { arrunique : function(array) { var ret = [], done = {}; try { for (var i = 0, length = array.length; i < length; i++) { var tmp = array[i]; if (!done[tmp]) { done[tmp] = true; ret.push(tmp); } } } catch (e) { ret = array; } return ret; } }); })(jQuery); jQuery本身有一个工具方法 jQuery.unique(array),但是在1.3的时候对于纯粹的数组去重有些问题,上面的代码改了源码一点。 |
|
返回顶楼 | |
发表时间:2010-12-10
最后修改:2010-12-10
正常的大家都写了。。我乱写个递归的。。嘿嘿,原理是一样的
var ary = [1,1,1,1,1,1,2,32,,1,1,1,1,1,213,14,3,25,,,,51512,,"fasfasfsa",null,NaN,1,function(){},function(){},function(){},{},{},[],"fasfasfsa"]; (function(index) { index = index||0; for(var i=index+1;i<ary.length;i++) { if(ary[i] === ary[index]) { ary = ary.slice(0,i).concat(ary.slice(i--+1)); } } if(ary.length-index>1) { arguments.callee(index+1); } })(); |
|
返回顶楼 | |