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

遍历对象数组,用基本的for循环能实现,但for (x in array[])却实现不了

使用for循环遍历input对象数组的时候下面这样写 var hobby = document.getElementsByTagName("input"); for(var i=0;i<hobby.length;i++) 可以实现,但是写for(i in hobby)就不行,为什么呢?

正在回答

3 回答

for语句是固定形式啊。

0 回复 有任何疑惑可以回复我~

var hobby = document.getElementsByTagName("input");

hobby并不是一个array

这样转成array

var arr = Array.prototype.slice.call(hobby);

0 回复 有任何疑惑可以回复我~

是这样的: for in 并不是你理解的那种遍历效果。
for in 遍历的不是数组,而是那个对象,也就是hobby 这个对象,它遍历访问的每个值其实是hobby的每个属性,而不是数组元素,不信你可以用
for(var i in hobby){
alert(i);
}
来看看每个i到底是谁,肯定不是数组元素。

for 循环根据下标访问的才算真是的数组元素。

所以for in 和for 是有区别的。
并且,使用for in 的效率要远低于for循环哦

1 回复 有任何疑惑可以回复我~
#1

孙Xuan 提问者

我试了下,alert出来的果然不是数组元素。但是下面这段代码是为什么呢?慕课之前的课程是这样讲的。我以为这两段代码原理相同,结果发现行不通: <script type="text/javascript"> var x var mycars = new Array() mycars[0] = "Saab" mycars[1] = "Volvo" mycars[2] = "BMW" for (x in mycars) { document.write(mycars[x] + "<br />") } </script>
2016-08-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

遍历对象数组,用基本的for循环能实现,但for (x in array[])却实现不了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信