因为我的foo正在返回额外的钥匙?

fan*_*ncy 4 node.js coffeescript

我在一个包含3个对象的数组上调用它.除了这些额外的键之外,它最终会返回正确的键... unique last truncate random include contains any

为什么?

Tre*_*ham 6

您正在获得这些额外的属性,因为您或您正在使用的库已经扩展了Array原型.正如迈克在答案中指出的那样,你可以通过使用来跳过这些hasOwnProperty.实际上,CoffeeScript own内置了一个关键字,可以为您完成此操作:

for own i of foo
  obj = foo[i]
  ...
Run Code Online (Sandbox Code Playgroud)

但是,正如Mike在他的回答中指出的那样,通过递增计数器而不是遍历键来循环数组更有效.为此,您将使用CoffeeScript的for...in 语法:

for obj in foo
  ...
Run Code Online (Sandbox Code Playgroud)

(如果你也需要循环中的索引,你可以写for obj, i in foo.)