Unter ES6/2015 können Sie ein Objekt wie folgt in einer Schleife durchlaufen (unter Verwendung der Pfeilfunktion ):
Object.keys(myObj).forEach(key => {
console.log(key); // the name of the current key.
console.log(myObj[key]); // the value of the current key.
});
JS-Behälter
Unter ES7/2016 können Sie Object.entries
anstelle von Object.keys
und ein Objekt wie folgt durchlaufen:
Object.entries(myObj).forEach(([key, val]) => {
console.log(key); // the name of the current key.
console.log(val); // the value of the current key.
});
Das oben genannte würde auch als Einzeiler :
Object.entries(myObj).forEach(([key, val]) => console.log(key, val));
jsbin
Falls Sie auch durch verschachtelte Objekte schleifen wollen, können Sie eine rekursiv Funktion (ES6):
const loopNestedObj = obj => {
Object.keys(obj).forEach(key => {
if (obj[key] && typeof obj[key] === "object") loopNestedObj(obj[key]); // recurse.
else console.log(key, obj[key]); // or do something with key and val.
});
};
JS-Behälter
Die gleiche Funktion wie oben, aber mit ES7 Object.entries()
anstelle von Object.keys()
:
const loopNestedObj = obj => {
Object.entries(obj).forEach(([key, val]) => {
if (val && typeof val === "object") loopNestedObj(val); // recurse.
else console.log(key, val); // or do something with key and val.
});
};
Hier durchlaufen wir eine Schleife durch verschachtelte Objekte, ändern Werte und geben ein neues Objekt in einem Durchgang zurück, indem wir Object.entries()
kombiniert mit Object.fromEntries()
( ES10/2019 ):
const loopNestedObj = obj =>
Object.fromEntries(
Object.entries(obj).map(([key, val]) => {
if (val && typeof val === "object") [key, loopNestedObj(val)]; // recurse
else [key, updateMyVal(val)]; // or do something with key and val.
})
);
Eine andere Möglichkeit der Schleifenbildung durch Objekte ist die Verwendung von für ... in y für ... von . Ver die schön geschriebene Antwort von vdegenne .