获取关联数组键

我有一个JavaScript中的关联数组:

var dictionary = { "cats": [1,2,3,4,5], "dogs": [6,7,8,9,10] }; 

我如何得到这本字典的钥匙? 即我想要的

 var keys = ["cats", "dogs"]; 

7年后编辑:为了让术语正确 – 在JavaScript中没有像'关联数组'那样的东西 – 这在技术上只是一个object ,而且是我们想要的对象键。

尝试这个:

 var keys = []; for (var key in dictionary) { if (dictionary.hasOwnProperty(key)) { keys.push(key); } } 

hasOwnProperty是需要的,因为可以将键插入到dictionary的原型对象中。 但是,您通常不希望将这些密钥包含在您的列表中。

例如,如果你这样做:

 Object.prototype.c = 3; var dictionary = {a: 1, b: 2}; 

然后做一个for...in循环dictionary ,你会得到ab ,但你也会得到c

 for (var key in dictionary) { // do something with key } 

这是for..in声明 。

你可以使用: Object.keys(obj)

例:

 var dictionary = {"cats":[1,2,37,38,40,32,33,35,39,36], "dogs": [4,5,6,3,2]}; // Get the keys var keys = Object.keys(dictionary); 

浏览器支持请参阅下面的参考。 它支持Firefox 4.20,Chrome 5,IE9。 下面的链接包含一个代码片段,如果您的浏览器不支持Object.keys()则可以添加它。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys

只是简单的说明,如果你使用库(jQuery,原型等),应该谨慎使用for..in,因为它们大多数都是为创build的对象(包括字典)添加方法。

这将意味着,当你循环它们时,方法名称将显示为键。 如果您正在使用库,请查看文档并查找可枚举的部分,您将在其中find用于迭代对象的正确方法。

简单的JQUERY方式。

这是我用的
DictionaryObj是您想要通过的javascript字典对象。 价值,关键在于它们在字典中的名称。

  $.each(DictionaryObj, function (key, value) { $("#storeDuplicationList") .append($("<li></li>") .attr("value", key) .text(value)); }); 

我正在使用Rob de la Cruz的回复

 Object.keys(obj) 

并在一个早期加载的文件中,我从互联网上的其他地方借用了一些代码行,这些代码覆盖了没有内置Object.keys的旧版脚本解释器的情况。

 if (!Object.keys) { Object.keys = function(object) { var keys = []; for (var o in object) { if (object.hasOwnProperty(o)) { keys.push(o); } } return keys; }; } 

我认为这对于大型项目来说是两全其美的:简单的现代代码和向后兼容的旧版浏览器等。

当Rob de la Cruz的Object.keys(obj)不是本地可用时,它实际上将JW的解决scheme放入函数中。