一、
1.構(gòu)建一個(gè)新的數(shù)組存放結(jié)果
2.for循環(huán)中每次從原數(shù)組中取出一個(gè)元素,用這個(gè)元素循環(huán)與結(jié)果數(shù)組對(duì)比
3.若結(jié)果數(shù)組中沒(méi)有該元素,則存到結(jié)果數(shù)組中
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.創(chuàng)建一個(gè)新的數(shù)組存放結(jié)果
2.創(chuàng)建一個(gè)空對(duì)象
3.for循環(huán)時(shí),每次取出一個(gè)元素與對(duì)象進(jìn)行對(duì)比,如果這個(gè)元素不重復(fù),則把它存放到結(jié)果數(shù)組中,同時(shí)把這個(gè)元素的內(nèi)容作為對(duì)象的一個(gè)屬性,并賦值為1,存入到第2步建立的對(duì)象中。
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;
}
三,
如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i,那么表示第i項(xiàng)是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組。
function unique3(array){
var n = [array[0]]; //結(jié)果數(shù)組
//從第二項(xiàng)開(kāi)始遍歷
for(var i = 1; i < array.length; i++) {
//如果當(dāng)前數(shù)組的第i項(xiàng)在當(dāng)前數(shù)組中第一次出現(xiàn)的位置不是i,
//那么表示第i項(xiàng)是重復(fù)的,忽略掉。否則存入結(jié)果數(shù)組
if (array.indexOf(array[i]) == i) n.push(array[i]);
}
return n;
}
四,
給傳入數(shù)組排序,排序后相同值相鄰,然后遍歷時(shí)新數(shù)組只加入不與前一值重復(fù)的值。
// 將相同的值相鄰,然后遍歷去除重復(fù)值
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;
}