[英]Convert to hierarchical structure
var sample = [{
"_id": "1",
"category": "type1",
"path": "data1//data2//data3//data4",
"org": "001"
},
{
"_id": "2",
"category": "type2",
"path": "data1//data2//data3//data4",
"org": "002"
}
];
以上樣本數據需要轉換為層次結構。
var sample = {
children: [{
name: "type1",
children: [{
name: "data1",
children: [{
name: "data2",
children: [{
name: "data3",
children: [{
name: "data4"
}]
}]
}]
}]
},
{
name: "type2",
children: [{
name: "data1",
children: [{
name: "data2",
children: [{
name: "data3"
}]
}]
}]
}
]
};
預期產量:
+type1
data1
data2
data3
data4
您可以使用哈希表和層次結構來分配嵌套結構的子級別,並可以通過類別或路徑值進行訪問。
基本上,此提議檢查密鑰,如果不在對象中,則創建一個具有單個屬性和子級數組的新對象,並將一個新對象推入父下划線數組,並使用相同的引用前創建的數組的數組。
然后返回實際水平。 最后,將使用lanst值創建objetc並將其推送到數組。
var sample = [{ _id: "1", category: "type1", path: "data1//data2//data3//data4", org: "001" }, { _id: "2", category: "type2", path: "data1//data2//data3//data4", org: "002" }], result = { children: [] }; sample.forEach(function (a, i) { var keys = [a.category].concat(a.path.split('//')), last = keys.pop(); keys.reduce(function (r, k) { if (!r[k]) { r[k] = { _: [] }; r._.push({ name: k, children: r[k]._ }); } return r[k]; }, this)._.push({ name: last }); }, { _: result.children }); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.