問題:
從複雜物件建立屬性鍵的扁平清單具有多個嵌套級別,同時保持層次結構。
底層資料結構:
給定物件具有具有不同層級屬性的分層結構。
預期的輸出:
反映層次結構的屬性鍵列表。
初始方法:
提供了一個基本的遞歸函數 iterate 來循環遍歷物件並列印屬性鍵。但是,它不維護層次結構。
解決方案:
為了考慮層次結構,引入了一個堆疊變數來儲存物件中的當前路徑。當遞歸函數遍歷物件時,它將目前屬性追加到堆疊中。當遇到原始屬性時,它會與連接的堆疊一起列印,表示該屬性的完整路徑。
修訂的代碼:
<code class="js">function iterate(obj, stack) { for (var property in obj) { if (obj.hasOwnProperty(property)) { if (typeof obj[property] === "object") { iterate(obj[property], stack + "." + property); } else { console.log(stack + "." + property); $('#output').append($('<div>').text(stack + "." + property)); } } } } iterate(object, "");</code>
更新的解決方案:
引用答案中的更新解決方案提供了更清晰的實現,使用映射和歸約函數的組合來遞歸遍歷物件並建立屬性鍵的扁平列表。
<code class="js">Object.keys(object).map(key => createPath(object, key, "")).reduce((a, b) => a.concat(b))</code>
函數說明:
以上是如何使用層次結構展平嵌套物件的屬性清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!