我有一个对象(可以说是"关联数组"——也称为普通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方式应该是for(var key in obj),但现在我想知道:how can I do this in CoffeeScript?

推荐答案

使用for x,y of L.Relevant documentation美元.

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在 comments 中提到的变体for own k,v of ages.这会添加一个判断,以排除从原型继承的属性,这在本例中可能不是问题,但如果您是在其他东西的基础上构建,则可能是问题.

Javascript相关问答推荐

reaction useEffect KeyDown for each 条目配音输出

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

如何使用JavaScript将文本插入空div

构造HTML表单以使用表单数据创建对象数组

为什么useState触发具有相同值的呈现

为什么123[';toString';].long返回1?

当我在Reaction中创建一个输入列表时,我的输入行为异常

Reaction组件在本应被设置隐藏时仍显示

OpenAI转录API错误请求

使用Document.Evaluate() Select 一个包含撇号的HTML元素

Next.js中的服务器端组件列表筛选

如何在和IF语句中使用||和&;&;?

更改agGRID/Reaction中的单元格格式

未捕获的不变违规:即使在使用DndProvider之后也应使用拖放上下文

TypeORM QueryBuilder限制联接到一条记录

如何向内部有文本输入字段的HTML表添加行?

如果查询为空,则MongoDB将所有文档与$in匹配

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有

通过ng-绑定-html使用插入的HTML中的函数

如果未定义,如何添加全局变量