我在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);
console.log(keys);
只是一个简单的注释,警惕使用for..in如果你使用一个库(jQuery,原型等),因为他们中的大多数都添加了创建对象(包括字典)的方法.
这意味着当您遍历它们时,方法名称将显示为键.如果您使用的是库,请查看文档并查找可枚举的部分,您可以在其中找到用于迭代对象的正确方法.