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