[英]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.