Sim*_*ver 255 javascript arrays
我在Javascript中有一个关联数组:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
Run Code Online (Sandbox Code Playgroud)
我如何获得这本词典的密钥?即我想要
var keys = ["cats", "dogs"];
Run Code Online (Sandbox Code Playgroud)
编辑7年后:只是为了使术语正确 - 在Javascript中没有"关联数组"这一点 - 这在技术上只是一个object,它是我们想要的对象键.
JW.*_*JW. 380
试试这个:
var keys = [];
for (var key in dictionary) {
if (dictionary.hasOwnProperty(key)) {
keys.push(key);
}
}
Run Code Online (Sandbox Code Playgroud)
hasOwnProperty是必要的,因为可以将键插入到原型对象中dictionary.但是您通常不希望列表中包含这些键.
例如,如果您这样做:
Object.prototype.c = 3;
var dictionary = {a: 1, b: 2};
Run Code Online (Sandbox Code Playgroud)
然后做一个for...in循环了dictionary,你会得到a和b,但你也将获得c.
wom*_*ton 183
for (var key in dictionary) {
// do something with key
}
Run Code Online (Sandbox Code Playgroud)
这是for..in声明.
小智 80
您可以使用: 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);Run Code Online (Sandbox Code Playgroud)
请参阅下面的参考资料以获取浏 Firefox 4.20,Chrome 5,IE9支持它.下面的链接包含一个代码段,如果Object.keys()浏览器不支持,您可以添加该代码段.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
Jes*_*sse 16
只是一个简单的注释,警惕使用for..in如果你使用一个库(jQuery,原型等),因为他们中的大多数都添加了创建对象(包括字典)的方法.
这意味着当您遍历它们时,方法名称将显示为键.如果您使用的是库,请查看文档并查找可枚举的部分,您可以在其中找到用于迭代对象的正确方法.