第一種是比較常規(guī)的方法
思路:
1.構(gòu)建一個新的數(shù)組存放結(jié)果
2.for循環(huán)中每次從原數(shù)組中取出一個元素,用這個元素循環(huán)與結(jié)果數(shù)組對比
3.若結(jié)果數(shù)組中沒有該元素,則存到結(jié)果數(shù)組中
復(fù)制代碼 代碼如下:
Array.prototype.unique1 = function(){
var res = [this[0]];
for(var i = 1; i < this.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(this[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1());
思路:
1.先將原數(shù)組進(jìn)行排序
2.檢查原數(shù)組中的第i個元素 與 結(jié)果數(shù)組中的最后一個元素是否相同,因為已經(jīng)排序,所以重復(fù)元素會在相鄰位置
3.如果不相同,則將該元素存入結(jié)果數(shù)組中
復(fù)制代碼 代碼如下:
Array.prototype.unique2 = function(){
this.sort(); //先排序
var res = [this[0]];
for(var i = 1; i < this.length; i++){
if(this[i] !== res[res.length - 1]){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique2());
第三種方法(推薦使用)
思路:
1.創(chuàng)建一個新的數(shù)組存放結(jié)果
2.創(chuàng)建一個空對象
3.for循環(huán)時,每次取出一個元素與對象進(jìn)行對比,如果這個元素不重復(fù),則把它存放到結(jié)果數(shù)組中,同時把這個元素的內(nèi)容作為對象的一個屬性,并賦值為1,存入到第2步建立的對象中。
說明:至于如何對比,就是每次從原數(shù)組中取出一個元素,然后到對象中去訪問這個屬性,如果能訪問到值,則說明重復(fù)。
復(fù)制代碼 代碼如下:
Array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());
新聞熱點
疑難解答
圖片精選