Tôi đang tìm cách tốt nhất để chuyển đổi nhiều đường dẫn chuỗi thành đối tượng lồng nhau bằng javascript. Tôi đang sử dụng lodash nếu điều đó có thể giúp bằng bất kỳ cách nào.Tạo đối tượng lồng nhau từ nhiều đường dẫn chuỗi
tôi có các đường dẫn sau:
/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
và tôi muốn tạo ra các mảng sau đây của đối tượng:
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": []
}
]
}
]
}
];
tôi tự hỏi câu trả lời nào nhanh hơn, này hoặc @Jonasw. bất cứ suy nghĩ nào? Điều này đối với tôi là dễ đọc hơn nhiều. woudl lên hai lần nếu posible. : D –
@GeomanYabes này bằng câu trả lời đầu tiên của tôi (tuy nhiên nó trông đẹp hơn nhiều) –
@GeomanYabes Hàm đệ quy này chặt chẽ theo cấu trúc cây kết quả và tìm kiếm trẻ phù hợp trong một mảng trong thời gian tuyến tính. Điều này có thể được cải thiện bằng cách ánh xạ trực tiếp các tên con đến các thuộc tính đối tượng của nút gốc cây và chuyển đổi sang bố cục mảng của OP sau này. Mà sẽ đến với một chi phí liên tục bổ sung, vì vậy có lẽ không mong muốn trừ khi OP đề với rất nhiều đường dẫn. –