我有一些 JSON 数据(简单的对象数组)。
var input= [
{
"cat": "some",
"id": "0"
},
{
"cat": "some",
"id": "1"
},
{
"cat": "some/category",
"id": "2"
},
{
"cat": "some/category/sub",
"id": "3"
},
{
"cat": "some/other",
"id": "4"
},
{
"cat": "some/thing/different",
"id": "5"
},
{
"cat": "some/thing/different",
"id": "6"
},
{
"cat": "yet/another",
"id": "7"
}
]
我想根据类别从中生成嵌套的 html 列表:
- 一些
- 0
- 1
- 类别
- 2
- 子
- 3
- 其他
- 4
- 事物
- 不同的
- 5
- 6
- 不同的
- 然而
- 其他
- 7
- 其他
我的第一步是使用该函数创建空的嵌套对象:
createNestedObject = function(base, names) {
var = 0;
var results = [];
while (i < names.length) {
base = base[names[i]] = base[names[i]] || {};
results.push(i++);
}
return results;
}
接下来,我通过拆分“cat”字符串并在循环中推送“ids”来填充数据(例如 some.category.sub.ids.push(7)),最终结果是:
var output =
{
"some": {
"ids": [
"0",
"1"
],
"category": {
"ids": [
"2"
],
"sub": {
"ids": [
"3"
]
}
},
"other": {
"ids": [
"4"
]
},
"thing": {
"different": {
"ids": [
"5",
"6"
]
}
},
"yet": {
"another": {
"ids": [
"7"
]
}
}
}
}
但是,结构有些问题,因为我事先不知道键名和嵌套深度。如何从此处提供的“输出”或“输入”数据中生成嵌套的 html 列表?