繁体   English   中英

遍历嵌套对象

[英]Looping through a nested object

目前,我有一个对象,并且正在遍历它以获取如下输出:

 var obj = { "first": { "Bob": { "1": "foo", "2": "bar" }, "Jim": { "1": "baz" } }, "second": { "Bob": { "1": "qux" }, "Jim": { "1": "quux" }, }, } for (let position in obj) { console.log(`In ${position} position`); let pos = obj[position]; for (let name in pos) { person = pos[name]; for (let item in person) { let thing = person[item]; console.log(`${position} ${name} ${item} ${thing}`) } } } 

但是,由于我要嵌套多个for循环,因此我觉得这可能是一种麻烦的方式,是否有一种更清洁的方式? 也许利用ES6 / ES7 + / etc。

您可以通过检查实际项(如果它是一个对象)来使用迭代和递归方法,然后通过保留指向该对象的路径来对该对象进行迭代。

以后使用路径和值。

 function iter(object, path = []) { Object.keys(object).forEach(k => { var temp = path.concat(k); if (object[k] && typeof object[k] === 'object') { iter(object[k], temp); return; } console.log(path.join('>'), object[k]); }); } var data = { first: { Bob: { "1": "foo", "2": "bar" }, Jim: { "1": "baz" } }, second: { Bob: { "1": "qux" }, Jim: { "1": "quux" } } }; iter(data); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM