如何在javascript字典中获取密钥集合?

时间:2012-05-18 14:58:41

标签: javascript dictionary

我有字典:

var driversCounter = {
 "one": 1, 
 "two": 2, 
 "three": 3, 
 "four": 4, 
 "five": 5
}

现在,我需要在下拉列表中显示它。如何在我的字典中获取密钥集合?

10 个答案:

答案 0 :(得分:114)

在较旧的浏览器中使用Object.keys()shim ...

const keys = Object.keys(driversCounter);

如果您想要,则有Object.values(),如果您需要密钥,则可以使用Object.entries(),通常与{ {1}}像这样...

Array.prototype.forEach()

或者,考虑到您的使用案例,也许会这样做......

Object.entries(driversCounter).forEach(([key, value]) => {
   console.log(key, value);
});

答案 1 :(得分:53)

一种选择是使用Object.keys()

Object.keys(driversCounter)

它适用于现代浏览器(但是,IE仅支持从版本9开始)。

要添加兼容支持,您可以复制 MDN 中提供的代码段。

答案 2 :(得分:19)

循环遍历“字典”(我们称之为JS中的对象),使用for in循环:

for(var key in driversCounter) {
    if(driversCounter.hasOwnProperty(key)) {
        //key                 = keys,  left of the ":"
        //driversCounter[key] = value, right of the ":"
    }
}

答案 3 :(得分:9)

这适用于所有JavaScript实现:

var keys = [];

for (var key in driversCounter) {
    if (driversCounter.hasOwnProperty(key)) {
        keys.push(key);
    }
}

与之前提及的其他人一样,您可能会使用Object.keys,但它可能无法在较旧的引擎中使用。所以你可以使用以下猴子补丁:

if (!Object.keys) {
    Object.keys = function (object) {
        var keys = [];

        for (var key in object) {
            if (object.hasOwnProperty(key)) {
                keys.push(key);
            }
        }
    }
}

答案 4 :(得分:5)

使用Object.Keys()

var driversCounter = {
                      "one": 1,
                      "two": 2,
                      "three": 3,
                      "four": 4,
                      "five": 5
                     }
console.log(Object.keys(driversCounter));

答案 5 :(得分:3)

使用现代JS引擎,您可以使用Object.keys(driversCounter)

答案 6 :(得分:3)

对于新浏览器:Object.keys( MY_DICTIONARY )将返回一组键。否则你可能想要以旧学校的方式:

var keys = []
for(var key in dic) keys.push( key );

答案 7 :(得分:1)

正如其他人所说的那样,你可以使用Object.keys(),但谁更关心旧版浏览器,对吧?

好吧,我知道。

试试this。来自PHPJS的array_keys端口是PHP的便捷array_keys函数,因此它可以在JS中使用。乍一看,如果支持,它会使用Object.keys,但处理不太容易的情况。它甚至包括根据您可能要查找的值过滤键(可选)以及是否使用严格比较===与类型转换比较==(可选)进行切换

答案 8 :(得分:1)

如果你可以使用JQuery那么

var keys = []; 
$.each(driversCounter, function(key, value) { 
    keys.push(key); 
}); 

console.log(JSON.stringify(keys));

以下是答案:

["one","two","three","four","five"]

这样您就不必担心浏览器是否支持Object.keys方法。

答案 9 :(得分:-4)

另一种方法是使用多维数组:

var driversCounter = [
    ["one", 1], 
    ["two", 2], 
    ["three", 3], 
    ["four", 4], 
    ["five", 5]
]

并通过driverCounter [k] [j]访问该值,其中j = 0,1。
通过以下方式将其添加到下拉列表中:

var dd = document.getElementById('your_dropdown_element');
for(i=0;i<driversCounter.length-1;i++)
{
    dd.options.add(opt);
    opt.text = driversCounter[i][0];
    opt.value = driversCounter[i][1];
}