我正在寻找将多个字符串路径转换为使用javascript的嵌套对象的最佳方法。如果可以以任何方式帮助,我正在使用lodash。从多个字符串路径创建嵌套对象
我得到了以下路径:
/root/library/Folder 1
/root/library/Folder 2
/root/library/Folder 1/Document.docx
/root/library/Folder 1/Document 2.docx
/root/library/Folder 2/Document 3.docx
/root/library/Document 4.docx
,我想创建对象的下列数组:在每个字符串
var objectArray =
[
{
"name": "root", "children": [
{
"name": "library", "children": [
{
"name": "Folder 1", "children": [
{ "name": "Document.docx", "children": [] },
{ "name": "Document 2.docx", "children": [] }
]
},
{
"name": "Folder 2", "children": [
{ "name": "Document 3.docx", "children": [] }
]
},
{
"name": "Document 4.docx", "children": []
}
]
}
]
}
];
我想知道哪个更快,或者@Jonasw的答案。任何想法?这对我来说更可读。如果可能的话,请双击两次。 :D –
@GeomanYabes这等于我的第一个答案(但它看起来好多了) –
@GeomanYabes这个递归函数紧跟在生成的树结构之后,并在线性时间内搜索数组中的匹配子元素。这可以通过直接将子对象映射到父树节点的对象属性并稍后转换为OP的数组布局来加以改进。这会带来额外的不变成本,因此可能不合意,除非OP处理大量路径。 –