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

遍历数组时,为什么有时候...

遍历数组时,为什么有时候...

qq_杀意隆_0 2017-09-28 15:33:29
为何for(var i in Array){}和for(var i=0;i<Array.length;i++){}两种写法得到的结果有时会不一样???
查看完整描述

3 回答

已采纳
?
__innocence

TA贡献313条经验 获得超208个赞

因为数组也是对象,所以第一种情况,除了得到数组的元素,也有可能得到数组的属性

查看完整回答
反对 回复 2017-09-28
  • qq_杀意隆_0
    qq_杀意隆_0
    length也是数组的属性,用第一种方式为什么不会被遍历出
  • __innocence
    __innocence
    var arr = [] Object.getOwnPropertyDescriptor(arr,'length') 你会发现,数组的length属性是不可枚举的,所以在for in 里面没有length属性
?
橋本奈奈未

TA贡献436条经验 获得超108个赞

补充下_innocence的答案,for...in遍历对象的可枚举属性,因为数组也是对象,所以你可以

var arr = [];arr.x=1;

这么写是可以的,但是for循环遍历的是数组的索引属性。

大概就是酱

查看完整回答
1 反对 回复 2017-09-28
?
SKY子不语

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

索引数组(下标为数字)遍历用两种方法是一样的

关联数组(hash数组)遍历只能用方法1,因为关联数组的length是0

查找: 索引数组                       hash数组
        遍历                              不用遍历
    受存储位置影响            和存储位置无关
    受数组元素个数影响    和数组中元素个数无关
  总结: 今后只要希望快速查找元素时,就用hash数组

查看完整回答
1 反对 回复 2017-09-28
  • 3 回答
  • 0 关注
  • 2152 浏览
慕课专栏
更多

添加回答

举报

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