2012-05-18 17 views

Odpowiedz

73

Użyj Object.keys() lub w starszych przeglądarkach.

Alternatywnie rozważa swój przypadek użycia, może to zrobi ...

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 (key) '' –

3

Dzięki nowoczesnym silnikiem JS można użyć Object.keys(driversCounter)

46

Jedną z opcji jest użycie Object.keys():

Object.keys(driversCounter) 

Działa dobrze w nowoczesnych przeglądarkach (jednak IE obsługuje go począwszy od wersji 9).

Aby dodać zgodną obsługę, możesz skopiować fragment kodu podany w MDN.

+1

Większość użyteczna odpowiedź tutaj! – securecurve

17

pętli przez „słownika” (nazywane jest to obiekt w JS) używać for in pętli:

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

nowych przeglądarkami Object.keys(MY_DICTIONARY) powróci wiele klawiszy. Inny może chcesz iść starej szkoły sposób:

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

preferują odpowiedź Josepha na tzw. Old-school way –

+0

Niekompletne ze względu na możliwe prototypowanie. –

+0

dlatego, gdy zobaczyłem odpowiedź Josepha, przypomniałem sobie, że ... i zamiast go edytować, po prostu powiedziałem, że wolę jego odpowiedź, prawda? –

1

Jak mówili inni, ty mógł korzystanie Object.keys(), ale kto dba o starszych przeglądarek, prawda?

Cóż, robię.

Wypróbuj this. array_keys z portów PHPJS Poręczna funkcja PHP array_keys, dzięki czemu można jej używać w JS. W skrócie używa on Object.keys, jeśli jest obsługiwany, ale obsługuje skrzynkę, w której nie jest łatwo. Zawiera nawet filtrowanie klawiszy opartych na wartościach może być szukających (opcjonalnie) oraz przełącznik do tego, czy nie używać ścisłego porównania === kontra porównaniu rzutowania == (opcjonalnie)

7

to będzie działać we wszystkich implementacjach javascript:

var keys = []; 

for (var key in driversCounter) { 
    if (driversCounter.hasOwnProperty(key)) { 
     keys.push(key); 
    } 
} 

Podobnie jak inne wcześniej wspomniane, można użyć Object.keys, ale może nie działać w starszych silnikach. Więc można użyć następującego poprawkę małpa:

if (!Object.keys) { 
    Object.keys = function (object) { 
     var keys = []; 

     for (var key in object) { 
      if (object.hasOwnProperty(key)) { 
       keys.push(key); 
      } 
     } 
    } 
} 
-3

Inne podejście byłoby wykorzystaniem tablic wielowymiarowych:

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

i dostęp do wartości przez driverCounter [k] [j], gdzie j = 0,1 w przypadku.
Dodaj go do listy rozwijanej przez:

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

Ten pierwszy blok kodu jest nieprawidłowy. – alex

1

jeśli można użyć JQuery następnie

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

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

tu następuje odpowiedź:

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

i ten sposób wouldn” Trzeba się martwić, jeśli przeglądarka obsługuje metodę Object.keys lub nie.

2

użycie Object.Keys()

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

Powiązane problemy