function uniq(array){
var temp = {}, r = [], len = array.length, val, type;
for (var i = 0; i < len; i++) {
val = array[i];
type = typeof val;
if (!temp[val]) {//不存在,加上
temp[val] = [type];
r.push(val);
} else if (temp[val].indexOf(type) < 0) {//存在,但没这个类型,加上
temp[val].push(type);
r.push(val);
}
}
return r;
}
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa))
// [1, 2, "2", 4, 9, "a", 3, 5, 6]
构造中间对象
{
1:["number"]
2:(2) ["number", "string"]
3:["number"]
4:["number"]
5:["number"]
6:["number"]
9:["number"]
a:["string"]
}