Mam słownik w formacie
dictionary = {0: {object}, 1:{object}, 2:{object}}
Jak mogę iterować w tym słowniku, wykonując coś podobnego
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
javascript
object
iteration
nbroeking
źródło
źródło
for (let [key, value] of Object.entries(obj))
, potrzebujesz Babel.Odpowiedzi:
tl; dr
Map
s.ECMAScript 5:
Nie, nie jest to możliwe w przypadku obiektów.
Powinieneś albo iterować z
for..in
, alboObject.keys
, w ten sposóbUwaga:
if
warunek powyżej jest konieczne, tylko jeśli chcesz iteracyjne właściwości, które sądictionary
przedmiotem bardzo własne. Ponieważfor..in
będzie iterować przez wszystkie odziedziczone wyliczalne właściwości.Lub
ECMAScript 2015
W ECMAScript 2015 możesz używać
Map
obiektów i iterować jeMap.prototype.entries
. Cytując przykład z tej strony,Lub iteruj w
for..of
ten sposóbWynik
Lub
Wynik
ECMAScript 2017
ECMAScript 2017 wprowadziłby nową funkcję
Object.entries
. Możesz użyć tego do iteracji obiektu, jak chcesz.Wynik
źródło
Object.keys(dictionary).forEach(function(key) {…
bardzo czytelny i kompatybilny.Object.entries(object).forEach(([key, val]) => {...});
Spróbuj tego:
źródło
Object.entries()
Metoda została określona w ES2017 (i jest obsługiwany we wszystkich nowoczesnych przeglądarkach ):Wyjaśnienie:
Object.entries()
przyjmuje obiekt jak{ a: 1, b: 2, c: 3 }
i zamienia ją w tablicy par klucz-wartość:[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
.Za pomocą
for ... of
możemy zapętlać wpisy tak utworzonej tablicy.Ponieważ mamy gwarancję, że każdy z tak iterowanych elementów tablicy sam w sobie jest tablicą z dwoma wpisami, możemy użyć destrukcji, aby bezpośrednio przypisać zmienne
key
orazvalue
do pierwszego i drugiego elementu.źródło
Możesz zrobić coś takiego:
źródło
Spróbuj tego:
źródło
WITAMY W 2020 * Drools w ES6 *
Oto kilka dość starych odpowiedzi - skorzystaj z destrukcji. Moim zdaniem jest to bez wątpienia najlepszy (bardzo czytelny) sposób na iterację obiektu.
źródło
forEach
sięmap
powyżej, to wtedy możliwe wartości zagregowanych.map
zwróci następnie listę wymienionych wartości, potencjalnie upraszczając kod na inne sposoby.Myślę, że szybki i łatwy sposób jest
wystarczy sprawdzić dokumentację https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
źródło
${key} ${value}
);});using swagger-ui.js
możesz to zrobić -
źródło
Możesz użyć poniższego skryptu.
wyjścia
1 a
2 b
c 3
źródło
Aby ulepszyć zaakceptowaną odpowiedź, aby zmniejszyć zagnieżdżanie, możesz to zrobić zamiast tego, pod warunkiem, że klucz nie zostanie odziedziczony:
Edycja: informacje o
Object.hasOwnProperty
tutajźródło