日期:2014-05-16  浏览次数:20321 次

javascript去除数组重复值
  • 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); ??
  • }??
    这个算法绝对经典,利用数组下标去除,实在是高
  • var ?s?=?[ "a" , "b" , "a" , "c" ]; ??
  • var ?arr?=?[],?map?=?{},?n,?i; ??
  • for (i=0;?i<>
  • ????n?=?s[i]; ??
  • ???? if (!map.hasOwnProperty(n)){ ??
  • ????????map[n]?=? true ; ??
  • ????????arr.push(n); ??
  • ????} ??
  • } ??
  • console.log(arr);??

  • 按楼上所述试验了一把:
    Array.prototype.say="haha" ; ??
  • var?array=[ new ?Object(), "1,2#<%^&*()+}[]{" , 2 , 2 , 3 , 3 , 4 , 4 , 6 , 6 , 5 , 5 ]; ??
  • var?newArry=[]; ??
  • for (var?x?in?array){ ??
  • ????????newArry[array[x]]= "" ; ??
  • } ??
  • for (var?y?in?newArry){ ??
  • ????alert(y+ "?" +typeof?y); ??
  • }??
    结论:
    这种写法也能处理除字符串外的其他数据。。
    也没有破坏顺序。
    但最后一条确实是那样的,会枚举原型链属性,需要使用hasOwnProperty。