mam słownika:Jak zdobyć kolekcję kluczy w słowniku javascript?
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
Teraz muszę pokazać ją w dropdownlist. Jak zdobyć kolekcję kluczy w moim słowniku?
mam słownika:Jak zdobyć kolekcję kluczy w słowniku javascript?
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
Teraz muszę pokazać ją w dropdownlist. Jak zdobyć kolekcję kluczy w moim słowniku?
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);
}
dict.hasOwnProperty (key) '' –
Dzięki nowoczesnym silnikiem JS można użyć Object.keys(driversCounter)
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.
Większość użyteczna odpowiedź tutaj! – securecurve
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 ":"
}
}
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);
preferują odpowiedź Josepha na tzw. Old-school way –
Niekompletne ze względu na możliwe prototypowanie. –
dlatego, gdy zobaczyłem odpowiedź Josepha, przypomniałem sobie, że ... i zamiast go edytować, po prostu powiedziałem, że wolę jego odpowiedź, prawda? –
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)
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);
}
}
}
}
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];
}
Ten pierwszy blok kodu jest nieprawidłowy. – alex
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.
użycie Object.Keys()
var driversCounter = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5
}
console.log(Object.keys(driversCounter));
http://stackoverflow.com/questions/8763125/get-array-of-objects-keys –