在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.
});
JS箱
在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.
});
};
JS箱
与上述函数相同,但使用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.
})
);
另一种循环对象的方法是使用for。。。为。。。属于看看vdegenne写得很好的答案。