我在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中没有所谓的“关联数组”-技术上这只是一个对象,它是我们想要的对象键。
当前回答
简单的jQuery方法:
这是我所使用的:
DictionaryObj是你要遍历的JavaScript字典对象。value, key当然是它们在字典里的名字。
$.each(DictionaryObj, function (key, value) {
$("#storeDuplicationList")
.append($("<li></li>")
.attr("value", key)
.text(value));
});
其他回答
简单的jQuery方法:
这是我所使用的:
DictionaryObj是你要遍历的JavaScript字典对象。value, key当然是它们在字典里的名字。
$.each(DictionaryObj, function (key, value) {
$("#storeDuplicationList")
.append($("<li></li>")
.attr("value", key)
.text(value));
});
试试这个:
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,因为大多数库都会为创建的对象(包括字典)添加方法。
这意味着当循环遍历它们时,方法名将以键的形式出现。如果您正在使用库,请查看文档并寻找可枚举的部分,在那里您将找到用于对象迭代的正确方法。
for (var key in dictionary) {
// Do something with key
}
它是for. in语句。
我现在用的是Rob de la Cruz的回复:
Object.keys(obj)
在早期加载的文件中,我有一些从互联网上其他地方借来的代码行,这些代码涵盖了没有Object的旧版本脚本解释器的情况。内置钥匙。
if (!Object.keys) {
Object.keys = function(object) {
var keys = [];
for (var o in object) {
if (object.hasOwnProperty(o)) {
keys.push(o);
}
}
return keys;
};
}
我认为这对大型项目来说是最好的:简单的现代代码和对旧版本浏览器的向后兼容支持,等等。
它有效地把JW的解代入了函数当Rob de la Cruz的解 Object.keys(obj)本身不可用。