でES6 / 2015あなたは、このようなオブジェクトをループすることができます(使用して矢印機能を)
Object.keys(myObj).forEach(key => {
console.log(key); // the name of the current key.
console.log(myObj[key]); // the value of the current key.
});
jsbin
でES7 / 2016を使用できObject.entries
代わりにObject.keys
、このようなオブジェクトを介してループ:
Object.entries(myObj).forEach(([key, val]) => {
console.log(key); // the name of the current key.
console.log(val); // the value of the current key.
});
上記はワンライナーとしても機能します:
Object.entries(myObj).forEach(([key, val]) => console.log(key, val));
jsbin
ネストされたオブジェクトもループしたい場合は、再帰関数(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.
});
};
jsbin
上記の関数と同じですが、ES7の Object.entries()
代わりに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.
});
};
ここでは、ネストされたオブジェクトをループして値を変更Object.entries()
し、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.
})
);