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
提交
取消
