數(shù)組去重可以使用indexOf()方法進行檢測僚害,但是這樣的效率實在是低喘沿,我們可以使用hash表的形式來進行對每一個數(shù)組進行存儲,這樣節(jié)省了時間侣肄,但是占據(jù)了一定的空間。
Array.prototype.unique2 = function()
{
var n = {},r=[]; //n為hash表醇份,r為臨時數(shù)組
for(var i = 0; i < this.length; i++) //遍歷當前數(shù)組
{
if (!n[this[i]]) //如果hash表中沒有當前項
{
n[this[i]] = true; //存入hash表
r.push(this[i]); //把當前數(shù)組的當前項push到臨時數(shù)組里面
}
}
return r;
}
還有第二種比較好的辦法稼锅,就是先將數(shù)組進行排序,然后比較相鄰的兩個數(shù)組是否相等僚纷,這樣在時間上有一定的增長矩距,但是也節(jié)省了很多空間,在綜合考慮相對比較不錯怖竭,代碼如下:
Array.prototype.unique4 = function()
{
this.sort();
var re=[this[0]];
for(var i = 1; i < this.length; i++)
{
if( this[i] !== re[re.length-1])
{
re.push(this[i]);
}
}
return re;
}