Coffeescript 为什么';这个咖啡剧本打印出来了吗?

Coffeescript 为什么';这个咖啡剧本打印出来了吗?,coffeescript,Coffeescript,因此,当索引为0时,我想将其打印出来: a = [ 1, 2, 3 ] for i of a if i == 0 console.log a[i] 但没有产出 i==0从来都不是真的…这是因为i在a中的项目上循环时只会是1、2或3,而不是索引号 这与您上面描述的工作方式相同: a = [ 1, 2, 3 ] for i in [0..a.length] if i == 0 console.log a[i] 我以字符串的形式返回索引,如果

因此,当索引为0时,我想将其打印出来:

a = [ 1, 2, 3 ] 

for i of a
    if i == 0
        console.log a[i]
但没有产出


i==0
从来都不是真的…

这是因为
i
a
中的项目上循环时只会是1、2或3,而不是索引号

这与您上面描述的工作方式相同:

a = [ 1, 2, 3 ] 

for i in [0..a.length]
    if i == 0
        console.log a[i]

我以字符串的形式返回索引,如果您将它们解析为整数,那么它就可以工作了

a = [ 1, 2, 3 ] 

for i of a
    if parseInt(i) == 0
        console.log a[i]

您不应该使用
of
在数组上循环,应该使用
in
。从:

理解也可用于迭代对象中的键和值。使用的
表示对对象属性的理解,而不是数组中的值

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])

嗨,谢谢你的回答:)但是我在索引上循环。请注意,我使用的是
of
in
中的
@ZhangXiao:您不应该使用
of
来循环数组,请使用
in
来循环数组。@muistooshort谢谢。我理解其中的区别,在这种情况下,我使用了
:)@muistooshort-Oh。。。我没有意识到这一点。你能解释一下原因吗?在本例中,我要做的是迭代一个数组,对于第一个元素,我想做一些特殊的事情。是的,你说得对!几分钟前我自己就知道了。。。哈哈,还是谢谢你:)@ZhangXiao,但是kurmiau的答案在你之前就已经发布了。所以,我建议删除你自己的答案,并接受这一个。