【问题标题】:Create array from hierarchy javascript从层次结构javascript创建数组
【发布时间】:2019-03-20 01:26:29
【问题描述】:

如果有人可以帮助我解决我遇到的问题,请。

我有这个层次结构:

A
-Aname
-B
--Bname
--B1
---B1name
---B11
----B11name
--B2
---B2name
---B21
----B21name
-C
--Cname
--C1
---C1name

这意味着 A 是 Aname 和 B 的父级,B 是 Bname 和 B1 的父级,B1 是 B1name 和 B11 的父级等。 如何使用此层次结构的 javascript 递归构建嵌套数组,如下所示:

[A[Aname, B[Bname, B1[B1name B11[B11name]], B2[B2name, B21[B21name]]], C[Cname, C1[C1name]]]]

【问题讨论】:

  • 数据最初是如何表示的?
  • 如果您发布实际的 javascript 会有所帮助。你让我们猜测这被表示为像一个对象。然后为了给你一个答案,我们必须重新创建它。
  • 对不起,A、B、B1... 是名称为属性的对象。还有另一个脚本包含填充数据的对象,但我在那里没有洞察力。我所需要的只是创建一个结构,该结构将检查对象表示是否是前一个对象的子表示并将它们推送到数组中,以便它看起来像我发送的那个,以及每个对象的属性
  • 欢迎来到 StackOverflow!请访问Help Center,使用tour 并在此处阅读asking good questions
  • @programernc:您可以编辑您的问题以更好地描述您的输入和首选输出。还请解释您到目前为止所做的尝试。 (帖子和 cmets 之间应该有一个edit 链接。)

标签: javascript arrays recursion multidimensional-array nested


【解决方案1】:

据我了解,您的输入就像

var obj = {
    A: {    
        Aname: {},
        B:{
            Bname: {},
            B1:{}
        }
    }
};

输出就像

[["Aname",["Bname","B1"]]]

所以这是你的解决方案:

function rfun(obj){
    return Object.keys(obj).map(item=>{
        return Object.keys(obj[item]).length ? rfun(obj[item]) : item;
    })
}

【讨论】:

    猜你喜欢
    • 2013-06-07
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2017-04-18
    相关资源
    最近更新 更多