首页 > web前端 > js教程 > 正文

如何使用层次结构展平嵌套对象的属性列表?

Susan Sarandon
发布: 2024-10-20 14:30:02
原创
792 人浏览过

How to Flatten a Nested Object's Property List with Hierarchy?

递归循环对象来构建属性列表

问题:
从复杂对象创建属性键的扁平列表具有多个嵌套级别,同时保持层次结构。

底层数据结构:
给定对象具有具有不同级别属性的分层结构。

期望的输出:
反映层次结构的属性键列表。

初始方法:
提供了一个基本的递归函数 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>
登录后复制

函数说明:

  • createPath: 递归构造从根对象到当前属性的属性路径。
  • reduce: 将所有属性的属性路径数组合并到一个扁平数组中。

以上是如何使用层次结构展平嵌套对象的属性列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!