我在JavaScript中有一个关联数组:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
我如何获得这个字典的键?也就是说,我想
var keys = ["cats", "dogs"];
只是为了让术语正确- JavaScript中没有所谓的“关联数组”-技术上这只是一个对象,它是我们想要的对象键。
我在JavaScript中有一个关联数组:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
我如何获得这个字典的键?也就是说,我想
var keys = ["cats", "dogs"];
只是为了让术语正确- JavaScript中没有所谓的“关联数组”-技术上这只是一个对象,它是我们想要的对象键。
当前回答
试试这个:
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…在字典循环中,你会得到a和b,但你也会得到c。
其他回答
只是一个简短的笔记。如果你使用一个库(jQuery, Prototype等),请谨慎使用for..in,因为大多数库都会为创建的对象(包括字典)添加方法。
这意味着当循环遍历它们时,方法名将以键的形式出现。如果您正在使用库,请查看文档并寻找可枚举的部分,在那里您将找到用于对象迭代的正确方法。
简单的jQuery方法:
这是我所使用的:
DictionaryObj是你要遍历的JavaScript字典对象。value, key当然是它们在字典里的名字。
$.each(DictionaryObj, function (key, value) {
$("#storeDuplicationList")
.append($("<li></li>")
.attr("value", key)
.text(value));
});
for (var key in dictionary) {
// Do something with key
}
它是for. in语句。
你可以使用:Object.keys(obj)
例子:
Var字典= { “猫”:[1,2,37,38,40,32,33,35,39,36], “狗”:[4,5,6,3,2] }; //去拿钥匙 var keys = Object.keys(字典); console.log(键);
有关浏览器支持,请参阅下面的参考资料。支持Firefox 4.20、Chrome 5和Internet Explorer 9。Object.keys()包含一个代码片段,如果您的浏览器不支持Object.keys(),可以添加该代码片段。
试试这个:
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…在字典循环中,你会得到a和b,但你也会得到c。