【发布时间】:2021-09-19 20:43:49
【问题描述】:
我有一个对象数组,它们都有一个路径和一个名称属性。 喜欢
[
{
"id": "1",
"path": "1",
"name": "root"
},
{
"id": "857",
"path": "1/857",
"name": "Animals"
},
{
"id": "1194",
"path": "1/857/1194",
"name": "Dinasours"
},
...and so on
]
以下是一些路径示例
1/1279/1282
1/1279/1281
1/1279/1280
1/857
1/857/1194
1/857/1194/1277
1/857/1194/1277/1278
我想把它变成一个多维数组,比如:
const data = {
id: "1",
name: "Root",
children: [
{
id: "1279",
name: "Toys",
},
{
id: "857",
name: "Animals",
children: [
{
id: "1194",
name: "Dinasours",
children: [
{
id: "1277",
name: "T-Rex",
children: [
{
id: "1278",
name: "Superbig T-Rex",
},
],
},
],
},
],
},
],
};
如您所见,数据量要大得多。
有没有一种巧妙的方法来转换这些数据?
【问题讨论】:
-
您要转换每个
id属性吗? -
这对于输出来说是不够的。我拥有的数据是我编写的第一个数据类型的数组,即 json 格式的数组。但最好知道
path中的结束整数始终与当前id相同 -
你不能有更多的根路径,比如
{id:2, path :'2', name: 'other root'},对吧? -
这些叶子节点即1278能否存在于多条路径下?换句话说,带有
id1278 的“Superbig T-Rex”是否可以同时存在于动物和玩具之下..?我问的原因是,如果不能,那么我们可以丢弃path并切换到parent结构,这可能会减轻工作。 -
路径的最后一部分,即注释 2 的 id 不会出现在我认为的其他地方
标签: javascript arrays typescript