【发布时间】:2012-10-15 00:43:16
【问题描述】:
所以当索引为0时,我想打印出来:
a = [ 1, 2, 3 ]
for i of a
if i == 0
console.log a[i]
但是没有输出。
i == 0 永远不会是真的......
【问题讨论】:
标签: coffeescript
所以当索引为0时,我想打印出来:
a = [ 1, 2, 3 ]
for i of a
if i == 0
console.log a[i]
但是没有输出。
i == 0 永远不会是真的......
【问题讨论】:
标签: coffeescript
i 将索引作为字符串返回,如果将它们解析为整数,它将起作用
a = [ 1, 2, 3 ]
for i of a
if parseInt(i) == 0
console.log a[i]
【讨论】:
这是因为i 只会是 1、2 或 3,因为您循环遍历 a 中的项目,而不是索引号。
按照您上面描述的方式工作:
a = [ 1, 2, 3 ]
for i in [0..a.length]
if i == 0
console.log a[i]
【讨论】:
of 但in。
of来循环数组,用in循环数组。
of :)
您不应该使用of 来循环数组,而应该使用in。来自fine manual:
理解也可用于迭代对象中的键和值。使用
of表示理解对象的属性而不是数组中的值。yearsOld = max: 10, ida: 9, tim: 11 ages = for child, age of yearsOld "#{child} is #{age}"
所以你试图迭代数组对象的 属性,而不是它的索引。
您应该在循环中使用其中一种:
for e, i in a
if(i == 0)
console.log(a[i])
for e, i in a
console.log(e) if(i == 0)
console.log(e) for e, i in a when i == 0
#...
或者,既然你有一个数组和一个数字索引,为什么不跳过循环直接进入重点:
console.log(a[0])
【讨论】: