Rookie JS问题:
for( var p in ['nodeName', 'nodeType', 'tagName', 'localName'] ) {
console.log( p + '=' + all[i][p] + '\n' );
}
我希望看到像
这样的东西nodeName=DIV
相反,我得到了
0=undefined
我是否被迫将数组分配给变量,以便我可以将其编入索引?有没有办法在for-in中使用这种语法并从数组中检索字符串?
谢谢!
答案 0 :(得分:6)
对数组使用for..in
几乎总是错误的。它遍历对象属性,而不是值-s所以在你的情况下它会产生0,1,2和3.如果你决定用自定义方法扩展Array.prototype
,它会更糟 (与扩展Object.prototype
不同,这不是一个很大的禁忌)。使用for..in
时,它们的名称也将被重复。
做你想做的事的正确方法是:
var foo = [...];
for(var i = 0; i < foo.length; i++) {
// use foo[i]
}
或者这个(在现代浏览器中或者使用shim'd函数):
[...].forEach(function(value) {
// use value
});