获取关联数组键
我有一个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
,你会得到a
和b
,但你也会得到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放入函数中。