我有字典:
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
现在,我需要在下拉列表中显示它。如何在我的字典中获取密钥集合?
答案 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];
}