gpt4 book ai didi

javascript - 递归创建嵌套数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:45 25 4
gpt4 key购买 nike

对于如何递归创建一组嵌套数组/对象有什么建议吗?

我让我的用户使用快速文本区域添加多个元素。它们将用星号表示子项。所以我有一个像这样的字符串,我想把它变成一个数组。

level 1.1
level 1.2
* level 1.2.1
** level 1.2.1.1
** level 1.2.1.2
* level 1.2.2

这是我希望看到的结果:

[
{
name: "level 1.1"
},
{
name: "level 1.2",
nodes: [
{
name: "level 1.2.1",
nodes: [
{
name: "level 1.2.1.1"
},
{
name: "level 1.2.1.2"
}
]
},
{
name: "level 1.2.2"
}
]
}
]

挑战在于我不知道节点将下降到的深度。

如有任何建议,我们将不胜感激。

最佳答案

这是一种线性方法,没有递归。

您可以数星星并将此信息用于给定节点的所需级别。

该提案使用数组作为对最后插入级别的引用,并维护所需的对象结构。

如果缺少级别,此解决方案不提供健全性检查。

var data = ['level 1.1', 'level 1.2', '* level 1.2.1', '** level 1.2.1.1', '** level 1.2.1.2', '* level 1.2.2'],
result = [],
levels = [{ nodes: result }];

data.forEach(function (s) {
var level = (s.match(/^\*+(?=\slevel)/) || [''])[0].length,
name = s.match(/[^*]+$/)[0].trim();

levels[level].nodes = levels[level].nodes || [];
levels[level].nodes.push(levels[level + 1] = { name: name });
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 递归创建嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47506744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com