我在Javascript中有一个关联数组:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
我如何获得这本字典的钥匙?即我想要
var keys = ["cats", "dogs"];
七年后的编辑:为了使术语正确-在Javascript中没有“关联数组”之类的东西-从技术上讲object
,这只是一个并且是我们想要的对象键。
我在Javascript中有一个关联数组:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
我如何获得这本字典的钥匙?即我想要
var keys = ["cats", "dogs"];
七年后的编辑:为了使术语正确-在Javascript中没有“关联数组”之类的东西-从技术上讲object
,这只是一个并且是我们想要的对象键。
Answers:
您可以使用: 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);
请参阅下面的参考以获取浏览器支持。Firefox 4.20,Chrome 5,IE9支持该功能。下面的链接包含一个代码段,如果Object.keys()
浏览器不支持,则可以添加该代码段。
https://developer.mozilla.org/zh-CN/JavaScript/Reference/Global_Objects/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...in
循环dictionary
,你将得到a
和b
,但是你也将得到c
。
keys.push(key);
。您只是从全局名称空间中提取(并进行声明)。:)
for (var key in dictionary) {
// do something with key
}
这是for..in语句。
dictionary.hasOwnProperty(key)
,否则你可能会从原型链方法结束..
简单的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的解决方案有效地放入了函数中。