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。