如何在 CoffeeScript 中迭代对象中的键和值?

2022-08-30 01:34:06

我有一个对象(可以说是一个“关联数组” - 也称为普通JavaScript对象):

obj = {}
obj["Foo"] = "Bar"
obj["bar"] = "Foo"

我想迭代使用CoffeeScript,如下所示:obj

# CS
for elem in obj

上面的CS代码编译为JS:

// JS
for (i = 0, len = obj.length; i < len; i++)

这在这种情况下是不合适的。


JavaScript的方式是,但现在我想知道:我怎么能在CoffeeScript中做到这一点?for(var key in obj)


答案 1

用。相关文档for x,y of L

ages = {}
ages["jim"] = 12
ages["john"] = 7

for k,v of ages
  console.log k + " is " + v

输出

jim is 12
john is 7

您可能还需要考虑Aaron Dufour在评论中提到的变体。这将添加一个检查以排除从原型继承的属性,这在此示例中可能不是问题,但如果您要在其他内容之上进行构建,则可能是问题。for own k,v of ages


答案 2

你正在初始化一个数组,但随后你像对象一样使用它(js中没有“关联数组”)。

使用语法对对象进行迭代(如下所示):

for key, val of arr
  console.log key + ': ' + val