2012-05-18 36 views
55

我有詞典:如何獲得在javascript字典中的鍵的集合?

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

現在,我需要表現出來的下拉列表。如何獲得我的字典中的密鑰集合?

+0

http://stackoverflow.com/questions/8763125/get-array-of-objects-keys –

回答

73

使用Object.keys()shim它在較舊的瀏覽器中。

另外,考慮到你的使用情況,也許這將做到這一點...

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

'dict.hasOwnProperty(鍵)' –

3

擁有現代化的JS引擎,你可以使用Object.keys(driversCounter)

46

一種選擇是使用Object.keys()

Object.keys(driversCounter) 

它適用於現代瀏覽器(但是,IE僅支持從版本9開始)。

要添加兼容的支持,您可以複製MDN中提供的代碼段。

+1

最可用答案​​在這裏! – securecurve

17

通過「字典」(我們稱之爲在JS對象)循環,使用for in循環:

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

新的瀏覽器:Object.keys(MY_DICTIONARY)將返回鍵的數組。否則,你可能想要去的老同學的方式:

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

更喜歡約瑟夫所謂的老派方式的回答 –

+0

由於可能的原型設計而不完整。 –

+0

這就是爲什麼當我看到約瑟夫的回答時,我想起了......而不是編輯它,我只是告訴他更喜歡他的回答,對嗎? –

1

正如其他人所說,你能使用Object.keys(),但誰在乎老的瀏覽器,對不對?

嗯,我這樣做。

嘗試thisarray_keys來自PHPJS端口PHP的方便array_keys函數使它可以在JS中使用。一目瞭然,如果支持,它使用Object.keys,但處理不太容易的情況。它甚至還包括過濾基於你可能會尋找值(可選)鍵和是否要使用嚴格比較===與類型轉換比較==(可選)

7

這將在所有的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); 
      } 
     } 
    } 
} 
-3

一種不同的方法將是使用多維陣列:

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

第一個代碼塊無效。 – alex

1

,如果你可以使用jQuery然後

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

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

這裏如下答案:

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

而這樣一來,你止跌」不必擔心瀏覽器是否支持Object.keys方法。

2

使用Object.Keys()

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