方式一
使用indexOf检测元素是否已经存在
function uniq(array){
if(array==null)
return;
var ret=[];
for(var i=0;i<array.length;i++){
if(ret.indexOf(array[i])===-1)
ret.push(array[i]);
}
return ret;
}
方式二
使用对象存储已经选取的元素,并用于判断剩余元素是否已经选取。
function uniq(array){
var ret=[],temp={};
for(var i=0;i<array.length;i++){
if(!temp[array[i]]){
temp[array[i]]=true;
ret.push(array[i]);
}
}
return ret;
}
方式三
使用indexOf与元素的在元素中的下标比较
function uniq(array){
var ret=[];
array.forEach(function(item,i,array){
if(array.indexOf(item)===i)
ret.push(item);
});
return ret;
}
方式四
将数据排序,并且和结果数组的最后的元素作比较去重
function uniq(array){
var ret=[];
var lastVal=array[0];
ret.push(array[0]);
array.sort();
for(var i=0;i<array.length;i++){
if(lastVal!=array[i]){
lastVal=array[i];
ret.push(lastVal);
}
}
return ret;
}