问题:
从复杂对象创建属性键的扁平列表具有多个嵌套级别,同时保持层次结构。
底层数据结构:
给定对象具有具有不同级别属性的分层结构。
期望的输出:
反映层次结构的属性键列表。
初始方法:
提供了一个基本的递归函数 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中文网其他相关文章!