簡體   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