【问题标题】:Traverse up and down multi-dimensional array in Angular 2 / TypeScript在Angular 2 / TypeScript中上下遍历多维数组
【发布时间】:2017-11-06 20:24:38
【问题描述】:
[
  {id: 1,
  name: "test 1",
  children: [
               {id: 2,
               name: "test 1-sub",
               children: []}
            ]
}]

假设一个类似上述的 json 数组,其中每个元素可能有也可能没有子元素,并且它可以达到 9 层深度。

如果我想知道我在树上的哪个位置,并且能够上树或下树。我知道在下降的过程中我可以简单地转到所选子元素的索引来查看它们。我该如何回到树上?

基本上我想我会在页面上有两个元素。包含数据的主数组,一个元素表示我正在使用的当前数组。

codes: any = [];
currentCode: any = {};

为了使这更易于阅读和导航,我一次只显示一层树,即主要代码,其下方是子元素。

我是否需要存储我所走的路径地图,然后每次从顶部步行到我想到达的地方?

我希望这不会太混乱。

【问题讨论】:

    标签: javascript json typescript multidimensional-array angular2-components


    【解决方案1】:

    假设:

    • ID 是唯一的
    • 您只需要到达父节点,并不需要整个路径

    有两种选择。如果您可以更改 json 或保留它的副本,您可以为每个节点添加一个 _parent 字段。如果您不想这样做,您可以维护一个映射,其中键是 id,值是父引用。

    无论哪种方式,您都可以通过递归遍历树来填充额外数据。

    【讨论】:

    • 能给我一个map方法的例子吗?我想将所有 json 保存在本地,并根据需要加载子节点。总共有 160,000 个,所以加载它是不可能的。
    • 你的意思是遍历函数吗?您可以在内存中保留 160,000 个节点的映射吗?
    • 我最终选择了一种方法,只显示他们正在查看的当前分支。我保留了一个加载所有内容的数组,并简单地显示他们当前正在查看的分支,而不是显示完整的树。
    猜你喜欢
    • 2012-04-16
    • 2010-11-01
    • 2015-09-26
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多