Trong ES6 / 2015, bạn có thể lặp qua một đối tượng như thế này: (sử dụng chức năng mũi tên )
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
Trong ES7 / 2016, bạn có thể sử dụng Object.entries
thay vì Object.keys
và lặp qua một đối tượng như thế này:
Object.entries(myObj).forEach(([key, val]) => {
console.log(key); // the name of the current key.
console.log(val); // the value of the current key.
});
Ở trên cũng sẽ hoạt động như một lớp lót :
Object.entries(myObj).forEach(([key, val]) => console.log(key, val));
jsbin
Trong trường hợp bạn cũng muốn lặp qua các đối tượng lồng nhau, bạn có thể sử dụng hàm đệ quy (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
Tương tự như chức năng trên, nhưng với ES7 Object.entries()
thay vì 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.
});
};
Ở đây chúng tôi lặp qua các đối tượng lồng nhau thay đổi giá trị và trả về một đối tượng mới trong một lần sử dụng Object.entries()
kết hợp với 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.
})
);