为了账号安全,请及时绑定邮箱和手机立即绑定

JS的问题,,求解

JS的问题,,求解

whosyourdaddy1994 2015-11-20 09:34:41
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  就是去掉重复的新数组


这样说不知道你能不能看懂。

查看完整回答
反对 回复 2015-11-20
?
品茗见南山

TA贡献1条经验 获得超0个赞

多写2个debugger;调试看看就知道了

查看完整回答
反对 回复 2015-11-20
  • 2 回答
  • 0 关注
  • 1537 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信