javascript for..迭代器之谜
javascript for ... in iterator mystery
对某人来说可能是一个大灌篮,但我不知道为什么这个代码会这样:
testObjects = [ { "HI" : "how are you" } ];
for (obj in testObjects) { alert(obj.HI); }
它提醒"未定义"(而不是"你好吗")。有人能解释一下吗?
谢谢。
for
。。。in
迭代键,而不是元素。所以for(obj in testObjects)
意味着obj
是密钥,在这种情况下是0(因为它是一个数组)。
你可以做
for (key in testObjects) {
alert(testObjects[key].HI)
}
然而,这不是的好做法。如果你这样做,并且有人向testOjbects
或所有数组添加了一个方法,它也会迭代该方法。
您的testObjects
变量实际上是一个数组,而不是一个对象。因此,它显然在"HI"键下没有任何内容(此外,您不应该在JavaScript中为数组使用for…in
循环;而应该使用常规的for
或while
循环)。
将循环代码更改为:for (obj in testObjects[0])
,或将变量定义更改为testObjects = { "HI" : "how are you" }
。
如果您的程序确实需要一个对象数组,那么您需要设置两个嵌套循环,可能如下所示:
for (var i=0, l=testObjects.length; i<l; i++) {
for (var key in testObjects[i]) {
// console.log(key + ' is ' + testObjects[i][key])
}
}
相关文章:
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 从两个基于0的for循环迭代器中获取单个基于0的索引的公式
- Rails:试图在javascript(Google Charts API)中嵌入一个adv-ruby(each+迭代器
- 在javascript中,从迭代器创建Array
- Javascript中的迭代器和生成器
- 从迭代器/生成器中获取单个yield值
- 迭代器和可迭代之间的区别
- 文件夹迭代器中的Google驱动器文件迭代器
- DOM:如何根据迭代器值设置元素宽度并在mouseover上调用函数
- javascript中多维数组的迭代器
- 迭代Promise迭代器的非递归方法
- 循环中的Node.js回调具有错误的迭代器值
- underscore.js,迭代器引用错误
- Javascript使用for-in循环迭代器来设置变量
- Javascript-如何在带有回调的for循环中使用迭代器
- javascript for..迭代器之谜
- TypeScript编译器无法在for of循环中找到immutable.js Map迭代器
- for迭代器中不可访问的代码
- 我需要在for循环中声明迭代器吗
- Javascript for 循环,中间是迭代器,递减运算符在 i 的左侧