获取关联数组键的列表

2020/10/09 12:01 · javascript ·  · 0评论

我在JavaScript中有一个关联数组:

var dictionary = {
    "cats": [1,2,3,4,5],
    "dogs": [6,7,8,9,10]
};

我如何获得这本字典的钥匙?即,我想要

var keys = ["cats", "dogs"];

只是为了使术语正确-在JavaScript中没有“关联数组”之类的东西-从技术上讲object,这只是一个,它是我们想要的对象键。

您可以使用: 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和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...in循环dictionary,你将得到ab,但是你也将得到c

for (var key in dictionary) {
  // Do something with key
}

这是for..in语句

请注意。for..in如果您使用库(jQueryPrototype等),请小心使用,因为它们中的大多数都会向创建的对象(包括字典)添加方法。

这意味着当您遍历它们时,方法名称将显示为键。如果您使用的是库,请查看文档并查找可枚举的部分,在该部分中您将找到用于对象迭代的正确方法。

简单的jQuery方式:

这是我用的:

DictionaryObj是您要通过的JavaScript字典对象。价值,关键当然是字典中它们的名称。

$.each(DictionaryObj, function (key, value) {
    $("#storeDuplicationList")
        .append($("<li></li>")
        .attr("value", key)
        .text(value));
});

我目前正在使用Rob de la Cruz的回复

Object.keys(obj)

在早期加载的文件中,我从Internet上的其他地方借来了一些代码行,其中包括未内置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的解决方案有效地放入了函数中。

本文地址:http://javascript.askforanswer.com/huoquguanlianshuzujiandeliebiao.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!