如何获得 JavaScript 字典中的键集合?

我有一本字典:

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

现在,我需要在一个下拉列表中显示它。我怎样才能在我的字典中找到所有的键呢?

301724 次浏览

在较老的浏览器中使用 Object.keys()[俄语]..。

const keys = Object.keys(driversCounter);

如果你想要 价值观,有 Object.values(),如果你想要键 还有的值,你可以使用 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);
}

通过一个现代的 JavaScript 引擎,您可以使用 Object.keys(driversCounter)

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

Object.keys(driversCounter)

它适用于现代浏览器(然而,Internet Explorer 仅从 版本9开始支持它)。

要添加兼容支持,可以复制 < a href = “ https://developer.mozilla.org/en/JavaScript/Reference/Global _ Objects/Object/keys”rel = “ norefrer”> MDN 中提供的代码段。

要遍历“ dictionary”(在 JavaScript 中我们称之为 object) ,使用 for in循环:

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

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

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

正如其他人所说,您 可以使用 Object.keys(),但是谁关心旧的浏览器,对不对?

我知道。

从 PHPJS港口PHP 的方便的 array_keys函数中尝试 这个.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];
}

如果你可以使用 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 = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
console.log(Object.keys(driversCounter));