新建一數組,遍歷傳入數組,值不在新數組就push勁新數組裏 ie8如下不支持indexOf方法數組
var newArr=[]; var arr=[1,2,"2",4,9,"a","a",2,3,5,6,5]; for(var i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])<0){ newArr.push(arr[i]); } }
新建一js對象以及新數組spa
遍歷傳入數組時,判斷是否爲js對象的鍵,不是的話給對象新增該鍵並放入新數組code
function uniq(arr){ var temp={},newArr=[],val,type; for(var i=0;i<arr.length;i++){ val=arr[i]; type=typeof val; if(!temp[val]){ //判斷是否存在這個js對象鍵 temp[val]=[type]; newArr.push(val); }else if(temp[val].indexOf(type) < 0){ //因爲傳入的鍵會自動執行 "toString()" 因此要區別下類型 temp[val].push(type); newArr.push(val); } } return newArr; } var arr=[1,2,"2",4,9,"a","a",2,3,5,6,5]; uniq(arr);