function unique(arr){
var tempObj ={};
for(var i=arr.length-1;i>=0;i--){
tempObj[arr[i]]="";
}
var tempArr =[];
for(var p in tempObj){
tempArr.push(p);
}
return tempArr;
}
var s=[1,1,2,2,3,3,"a","a","b","s"];
alert(unique(s));
原理,javascript对象实际上就是散列表,有key和value组成,将数组中的元素依次作为key赋值给临时对象 tmpObj,由于key不能重复,自然将重复的元素消除掉了,然后将对象的key值遍历一下,重新放置在数组中就可以了。
小知识:var o = {key:value},是javascript的对象字面量表示法,类似于json数据格式。
转自 http://buzheng.org/blog/javascript-unique-array-elements