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?=?[];?//一個新的臨時數組
for(var?i?=?0;?i?<?this.length;?i++)?//遍歷當前數組
{
if?(n.indexOf(this[i])?==?-1)?n.push(this[i]);
//--------------------- 這句話怎么理解-------------------------------------
}
return?n;
}
console.log(a.unique1());
8 回答
已采納

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

歐羅巴皇
TA貢獻5條經驗 獲得超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; ????????}

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