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