如何获取 JavaScript 字典中的键集合? [复制]

Posted

技术标签:

【中文标题】如何获取 JavaScript 字典中的键集合? [复制]【英文标题】:How can I get a collection of keys in a JavaScript dictionary? [duplicate] 【发布时间】:2012-05-26 04:01:07 【问题描述】:

我有一本字典:

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

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

【问题讨论】:

***.com/questions/8763125/get-array-of-objects-keys 【参考方案1】:

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

const keys = Object.keys(driversCounter);

如果你想要values,有Object.values(),如果你想要key value,你可以使用Object.entries(),通常与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);

【讨论】:

dict.hasOwnProperty(key)【参考方案2】:

一个选项是使用Object.keys()

Object.keys(driversCounter)

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

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

【讨论】:

【参考方案3】:

要遍历“字典”(我们在 javascript 中将其称为对象),请使用 for in 循环:

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

【讨论】:

【参考方案4】:

这适用于所有 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);
            
        
    

【讨论】:

【参考方案5】:

只需使用Object.keys():

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

【讨论】:

这与之前的答案有何不同?【参考方案6】:

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

由于可能的原型设计不完整。【参考方案8】:

正如其他人所说,您可以使用Object.keys(),但谁在乎旧浏览器,对吧?

嗯,我愿意。

试试this。 array_keys 来自 phpJS ports PHP 的方便的 array_keys 函数,所以它可以在 JavaScript 中使用。

乍一看,它使用Object.keys(如果支持),但它处理不太容易的情况。它甚至包括根据您可能正在寻找的值过滤键(可选)和切换是否使用严格比较=== 与类型转换比较==(可选)。

【讨论】:

【参考方案9】:

如果你可以使用jQuery,那么

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

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

答案如下:

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

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

【讨论】:

【参考方案10】:

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

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];

【讨论】:

以上是关于如何获取 JavaScript 字典中的键集合? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用字典中的键获取索引?

如何获取字典中的键列表?

python基础一 ------如何获取多个字典相同的键

好好学python · 字典

lianxi

lianxi