var arr = [1, 2, 2, 3, 4, 5, 6, 6];
function getArray(a) {
var hash = {},
len = a.length,
result = [];
for (var i = 0; i < len; i++){
if (!hash[a[i]]){
hash[a[i]] = true;
result.push(a[i]);
}
}
return result;
}
console.log(getArray(arr));这是个数组去重的方法,,里面的if(!hash[a[i]])这个叹号hash是什么意思啊,,难道是hash对象内没有a[i]这个值吗,,那接下来hash[a[i]]=true是什么意思,,搞不懂。。里面的值会等于true
2 回答
已采纳
李晓健
TA贡献1036条经验 获得超461个赞
开始 i = 0; a[i] = 1 hash = {} result = [], 这时hash[a[i]] 也就是 hash[1] 是不存在的。就会走if里面的代码hash={1: true} result = [1],
i =1 时; a[i] = 2 hash = {1:true} result = [1] ,这时hash[a[i]] 也就是 hash[2] 是不存在的。就会走if里面的代码hash={1:true,2:true} result = [1,2]
i=2时; a[i] = 2 hash = {1:true,2:true} result = [1,2] ; 这时hash[a[i]] 也就是 hash[2]=true 。就不会走if里的代码 ,这里原数组里的第二个2就忽略了,也就是第2个2是不会进到result
i = 3时; a[i] = 3 hash = {1:true,2:true} result = [1,2] ; 这时hash[a[i]] 也就是 hash[3] 是不存在的 。就会走if里面的代码hash={1:true,2:true,3:true} result = [1,2,3]
这样一直下去 最后得到的 result 就是去掉重复的新数组
这样说不知道你能不能看懂。
添加回答
举报
0/150
提交
取消