Chciałbym uzyskać klucze obiektu JavaScript jako tablicę w jQuery lub czystym JavaScript.
Czy istnieje mniej szczegółowy sposób niż ten?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
javascript
ecmascript-5
Richard
źródło
źródło
if(foo.hasOwnProperty(key))
, to właśnie zrobiłbym. Lub użyj$.map
.for var in x
pętliOdpowiedzi:
Użyj
Object.keys
:To jest funkcja ES5. Oznacza to, że działa we wszystkich nowoczesnych przeglądarkach, ale nie będzie działać w starszych przeglądarkach .
Podkładka ES5 ma implementację,
Object.keys
którą możesz ukraśćźródło
Możesz użyć jQuery's
$.map
.źródło
each
, jeśli coś z nimi robisz.$.each(foo, function(index, value){/* do something with index */});
Oczywiście
Object.keys()
jest to najlepszy sposób na zdobycie kluczy do obiektu. Jeśli nie jest dostępny w twoim środowisku, można go trywialnie pomijać za pomocą kodu, takiego jak w twoim przykładzie (z wyjątkiem tego, że musisz wziąć pod uwagę, że twoja pętla będzie iterować wszystkie właściwości w łańcuchu prototypowym, w przeciwieństwie doObject.keys()
zachowania).Twój przykładowy kod ...
jsFiddle .
... można zmodyfikować. Możesz wykonać przypisanie bezpośrednio w części zmiennej .
jsFiddle .
Oczywiście takie zachowanie jest inne niż w
Object.keys()
rzeczywistości ( jsFiddle ). Możesz po prostu użyć podkładki dystansowej w dokumentacji MDN .źródło
var keys = [], i = 0; for (keys[i++] in foo) {}
+1hasOwnProperty()
pewnością wymagają sprawdzenia?Nie wiem o mniej gadatliwym, ale zainspirowało mnie to, aby wymusić na jednym wierszu prośbę o jeden wiersz, nie wiem jednak, jak to jest w Pythonie;)
źródło
var enumerableKeysOnThePrototypeChain
;)for (keys[i++] in foo) {}
), ponieważ nadal działaszArray.push()
(nie wspominając o deklaracji całej funkcji). Implementacja w języku pythonowym powinna polegać w możliwie największym stopniu na zrozumieniu niejawnym, a jeśli to niemożliwe, za pomocą wyrażenia lambda.Jeśli szukasz tutaj czegoś, co wymienia klucze zagnieżdżonego obiektu o głębokości n jako płaskiej tablicy:
źródło
Podsumowanie
Aby uzyskać wszystkie klucze obiektu, którego możesz użyć
Object.keys()
.Object.keys()
przyjmuje obiekt jako argument i zwraca tablicę wszystkich kluczy.Przykład:
W powyższym przykładzie przechowujemy tablicę kluczy w kluczach const. Następnie możemy łatwo uzyskać dostęp do ilości właściwości obiektu, sprawdzając długość tablicy kluczy.
Uzyskanie wartości dzięki:
Object.values()
Uzupełniającą funkcją
Object.keys()
jestObject.values()
. Ta funkcja przyjmuje obiekt jako argument i zwraca tablicę wartości. Na przykład:źródło
Jeśli zdecydujesz się użyć Underscore.js, lepiej
źródło