qq_小盛開_0
2017-05-04 09:48:24
var?a=[1,2,3,3,3,3,3,2,2,];
Array.prototype.unique1?=?function()
{
var?n?=?[];?//一個新的臨時數(shù)組
for(var?i?=?0;?i?<?this.length;?i++)?//遍歷當前數(shù)組
{
if?(n.indexOf(this[i])?==?-1)?n.push(this[i]);
//--------------------- 這句話怎么理解-------------------------------------
}
return?n;
}
console.log(a.unique1());
8 回答
已采納

依韻_宵音
TA貢獻4條經(jīng)驗 獲得超1個贊
首先你需要知道,在`Array.prototype`上擴展的方法,默認情況下運行時,`this`指的是實例對象,比如運行`a.unique1()`時,函數(shù)內(nèi)部的`this`就是指a。
其次 你需要了解indexOf方法,對數(shù)組來說:indexOf(item) 來說就是判斷 返回item在數(shù)組中的下標,如果不在,則返回`-1`
這樣就清楚了吧
if?(n.indexOf(this[i])?==?-1)?{ ????//?若n這個臨時數(shù)組中不含有this[i]?,?就把this[i]?添加到新數(shù)組中。? ????//?記住this是在運行時才決定的,你運行a.unique1()?this就指代a,this[i]也就是a[i] ????n.push(this[i]); }

歐羅巴皇
TA貢獻5條經(jīng)驗 獲得超1個贊
??function?unique2(arr)?{ ????????????var?result?=?[],?hash?=?{}; ????????????for?(var?i?=?0,?elem;?(elem?=?arr[i])?!=?null;?i++)?{ ????????????????if?(!hash[elem])?{ ????????????????????result.push(elem); ????????????????????hash[elem]?=?true; ????????????????} ????????????} ????????????console.log(hash) ????????????return?result; ????????}

啊啊啊啊123
TA貢獻25條經(jīng)驗 獲得超8個贊
在空數(shù)組n里遍歷查找 數(shù)組a里的每一項,if判斷成功說明n里沒有a對應項的數(shù)據(jù),push到n里,這方法寫的有點意思啊

tom的貓
TA貢獻65條經(jīng)驗 獲得超35個贊
如果在數(shù)組n中沒有找到則添加進數(shù)組n中
indexOf 是查找一個值在某個字符串或者集合(數(shù)組)中的下標,如果能找到則返回對應下標,如果找不到則返回 -1
添加回答
舉報
0/150
提交
取消