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

如何在JavaScript字典中获取密钥集合?,javascript,dictionary,Javascript,Dictionary,我有一本字典: var driversCounter = { "one": 1, "two": 2, "three": 3, "four": 4, "five": 5 } 现在,我需要在下拉列表中显示它。如何在字典中获取密钥集合?在较旧的浏览器中使用它 const keys = Object.keys(driversCounter); 如果您

我有一本字典:

var driversCounter = {
    "one":   1,
    "two":   2,
    "three": 3,
    "four":  4,
    "five":  5
}
现在,我需要在下拉列表中显示它。如何在字典中获取密钥集合?

在较旧的浏览器中使用它

const keys = Object.keys(driversCounter);
如果您需要值,则有;如果您需要键和值,则可以使用,通常与
Array.prototype.forEach()配合使用,如下所示

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

或者,考虑到您的用例,也许这可以做到

var selectBox, option, prop;

selectBox = document.getElementById("drivers");

for (prop in driversCounter) {
   option = document.createElement("option");
   option.textContent = prop;
   option.value = driversCounter[prop];
   selectBox.add(option);
}

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

一个选项是:

它适用于现代浏览器(但是,Internet Explorer仅从一开始就支持它)

要添加兼容支持,您可以复制

中提供的代码片段以循环“字典”(我们在JavaScript中称其为对象),使用
for in
循环:

for(驱动器计数器中的变量键){
if(driversCounter.hasOwnProperty(键)){
//键=键,位于“:”的左侧
//driversCounter[键]=值,位于“:”的右侧
}
}

对于新浏览器:
对象。键(MY_DICTIONARY)
将返回一个键数组。否则,你可能会想走老路:

var keys = []
for(var key in dic) keys.push( key );
正如其他人所说,您可以使用
Object.keys()
,但谁会关心较旧的浏览器呢

嗯,我喜欢

试试看
array_-keys
来自PHPJS端口PHP的便捷
array_-keys
函数,因此可以在JavaScript中使用


乍一看,如果支持的话,它会使用
Object.keys
,但它处理的情况并不容易。它甚至包括根据您可能要查找的值筛选键(可选),以及是否使用严格比较
==
与类型转换比较
==
(可选)的切换。这将在所有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);
            }
        }
    }
}

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

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];
}
var dd=document.getElementById('your_dropdown_element');

对于(i=0;i,如果可以使用jQuery

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

console.log(JSON.stringify(keys));
答案如下:

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

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

只需使用
Object.keys()

var driversCounter={
"一":一,,
"二":,
"三":,
"四":,
“五”:5
}

console.log(Object.keys(driversCounter));
由于可能的原型设计而不完整。
dict.hasOwnProperty(key)
这与前面的答案有什么不同?
["one", "two", "three", "four", "five"]