在javascript(或CoffeScript)中有没有办法获取关联数组的键?我试图解决的真正问题是创建一个集合,但我发现的唯一方法是创建一个映射并使用键来生成集合。我知道我可以迭代元素并收集它们,但这对我来说似乎是额外的工作。
例如在CoffeeScript中,我可以这样做:
foobar = { "a": true, "b": true, "c": true }
keys = []
keys.push k for k,v of foobar
老实说,那不是那么多代码,但是没有其他方法可以做一个集合,或者只是从关联数组中获取密钥而无需编写特殊的类或拉入单独的库?
更新:我要求IE<需要支持9,所以不幸的是Object.keys(foobar)已经出局了。不过很好的建议,对不起,我在原来的问题中错过了这个要求。
答案 0 :(得分:3)
如果您不想使用Object.keys
或Object.getOwnPropertyNames
(或其各自的垫片),coffeescript会提供非常好的loop comprehensions:
keys = (k for own k of foobar) // == Object.keys foobar
keys = (k for k of foobar)
答案 1 :(得分:1)
您可以在此处使用Object.keys()
和polyfill:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys用于不支持该功能的浏览器。