Jeśli mam obiekt JS, taki jak:
var foo = { 'bar' : 'baz' }
Jeśli wiem, że foo
ma tę podstawową strukturę klucz / wartość, ale nie znam nazwy klucza, jaki jest najłatwiejszy sposób na zdobycie go? for ... in
? $.each()
? Mam nadzieję, że jest coś lepszego ....
javascript
jquery
sprugman
źródło
źródło
Odpowiedzi:
Jeśli chcesz uzyskać wszystkie klucze, wprowadzono ECMAScript 5
Object.keys
. Jest to obsługiwane tylko przez nowsze przeglądarki, ale dokumentacja MDC zapewnia alternatywną implementację (która wykorzystuje równieżfor...in
btw):Oczywiście, jeśli chcesz zarówno klucz, jak i wartość,
for...in
jest to jedyne rozsądne rozwiązanie.źródło
p
daje mi klucz, ale jak mogę uzyskać wartość klucza? Dzięki.Powtarzalibyśmy wewnątrz obiektu za pomocą pętli for:
Lub
źródło
foo[i]
być"_proto_"
?foo[i]
jeślii
jestsome string
?Możesz uzyskać dostęp do każdego klucza osobno, bez iteracji jak w:
źródło
const [firstKey, ...rest] = Object.keys(obj);
Biorąc pod uwagę twój obiekt:
Aby uzyskać
bar
, użyj:Aby uzyskać
baz
, użyj:Zakładając pojedynczy obiekt
źródło
Jedna wkładka dla Ciebie:
źródło
To najprostszy i najłatwiejszy sposób. Tak to robimy.
Teraz możesz iterować obiekty i uzyskiwać dostęp do wartości takich jak poniżej-
źródło
TypeError
jeśli oczekujesz, że klucz będzie liczbą. Ponieważ klucze są zawsze łańcuchami.Miałem ten sam problem i to działało
źródło
var value = person[key];
? W ten sposób nie musisz znać klucza wartości, którą chcesz pobrać.Patrz MDN
źródło
Nic więcej nie widzę
for (var key in foo)
.źródło
Najprostszym sposobem jest użycie Underscore.js:
Tak, potrzebujesz dodatkowej biblioteki, ale to takie proste!
źródło
Nie ma innej drogi niż
for ... in
. Jeśli nie chcesz tego używać (być może dlatego, że testowaniehasOwnProperty
przy każdej iteracji jest nieznacznie nieefektywne ?), Użyj innej konstrukcji, np. Tablicy kvp:źródło
Jak już wspomniałeś
$.each()
, oto przydatne podejście, które zadziałałoby w jQuery 1.6+:źródło
Object.keys () Metoda Object.keys () zwraca tablicę własnych wyliczalnych właściwości danego obiektu, w tej samej kolejności, jaką zapewnia pętla for ... in (różnica polega na tym, że pętla for-in wylicza właściwości również w łańcuchu prototypów).
Object.values () Metoda Object.values () zwraca tablicę wartości własnych wyliczalnych właściwości danego obiektu, w takiej samej kolejności, jak w pętli for ... in (różnica polega na tym, że wyliczana jest pętla for-in właściwości również w łańcuchu prototypów).
Aby uzyskać więcej, przejdź tutaj
źródło
użyj dla każdej pętli, aby uzyskać dostęp do kluczy w Object lub Maps w javascript
Uwaga: możesz także użyć
da ci to wynik:
[bar];
źródło
Cóż,
$.each
to konstrukcja biblioteki, podczas gdyfor ... in
natywna js, co powinno być lepszeźródło
Możesz użyć funkcji Object.keys, aby uzyskać klucze takie jak:
źródło
do wyświetlania jako ciąg znaków wystarczy użyć:
źródło
najlepszy sposób na uzyskanie klucza / wartości obiektu.
źródło