体式格局1:运用shift()猎取并删除删除数组的第一个元素,推断这个元素是不是还存在于数组中,假如存在则申明这个元素的是反复的;假如不存在,举行push()操纵
function unique(a){
if(Array.isArray(a)){
var len = a.length,item;
while(len--){
item = a.shift();
if(a.indexOf(item) === -1){
a.push(item);
}
}
}
return a;
}
体式格局2:竖立一个哈希表,经由过程对象属性查询去除反复元素
function unique(array){
var hash = {},
len = array.length,
result = [],
i;
for(i = 0; i < len; i++){
if(!hash[a[i]]){
hash[a[i]] = true;
result.push(a[i]);
}
}
return result;
}
体式格局3:思绪和体式格局2相似,然则简约许多
function unique(arr) {
var hash = {};
return arr.filter(function (n) {
hash[n] = (hash[n] || 0);
return (++hash[n] <= 1);
});
}