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.
})
);