一、
1.構建一個新的數組存放結果
2.for循環中每次從原數組中取出一個元素,用這個元素循環與結果數組對比
3.若結果數組中沒有該元素,則存到結果數組中
function unique(arr){
var res = [arr[0]];
for(var i = 1; i < arr.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
二,
1.創建一個新的數組存放結果
2.創建一個空對象
3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重復,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,并賦值為1,存入到第2步建立的對象中。
function unique(arr){
var rs =[];
var obj={};
for(var i=0;i<arr.length;i++){
if (!obj[arr[i]]) {
obj[arr[i]]=1;
rs.push(arr[i]);
}
}
return rs;
}
三,
如果當前數組的第i項在當前數組中第一次出現的位置不是i,那么表示第i項是重復的,忽略掉。否則存入結果數組。
function unique3(array){
var n = [array[0]]; //結果數組
//從第二項開始遍歷
for(var i = 1; i < array.length; i++) {
//如果當前數組的第i項在當前數組中第一次出現的位置不是i,
//那么表示第i項是重復的,忽略掉。否則存入結果數組
if (array.indexOf(array[i]) == i) n.push(array[i]);
}
return n;
}
四,
給傳入數組排序,排序后相同值相鄰,然后遍歷時新數組只加入不與前一值重復的值。
// 將相同的值相鄰,然后遍歷去除重復值
function unique4(array){
array.sort();
var re=[array[0]];
for(var i = 1; i < array.length; i++){
if( array[i] !== re[re.length-1]){
re.push(array[i]);
}
}
return re;
}