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

2022-01-24 00:00:00 javascript coffeescript

我有一个对象(可以说是关联数组" - 也称为纯 JavaScript 对象):

I have an object (an "associate array" so to say - also known as a plain JavaScript object):

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

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

I want to iterate over obj using CoffeeScript as follows:

# CS
for elem in obj

上面的CS代码编译成JS:

bu the CS code above compiles to JS:

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

在这种情况下不合适.

JavaScript 方式是 for(var key in obj) 但现在我想知道:我如何在 CoffeeScript 中做到这一点?

The JavaScript way would be for(var key in obj) but now I'm wondering: how can I do this in CoffeeScript?

推荐答案

使用 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 age.这会添加一个检查以排除从原型继承的属性,这在本示例中可能不是问题,但如果您是在其他东西之上构建,则可能会出现问题.

You may also want to consider the variant for own k,v of ages as mentioned by Aaron Dufour in the comments. This adds a check to exclude properties inherited from the prototype, which is probably not an issue in this example but may be if you are building on top of other stuff.

相关文章