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

我有字典:

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

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

使用Object.keys()或在旧浏览器中将其填充

另外,考虑到你的用例,也许这会做到这一点…

 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); } 

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

 Object.keys(driversCounter) 

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

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

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

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

这将在所有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); } } } } 

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

使用Object.Keys()

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

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

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

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

那么,我呢。

试试这个 。 PHPJS端口中的array_keys PHP方便的array_keys函数可以在JS中使用。 一目了然,如果支持的话,它使用Object.keys ,但是处理不太容易的情况。 它甚至包括基于您可能正在查找的值(可选)筛选键和是否使用严格比较===与types转换比较== (可选)

如果你可以使用JQuery那么

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

这里跟着答案:

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

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

另一种方法是使用multidimensional array:

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