qq_遁去的一_1
2023-05-11 14:11:14
我需要從平面對象數組創建一個嵌套的對象數組,它最多有 5 個級別。原始 JSON 如下所示:[{ "code": "01", "name": "Some name 1", "level": "1"}, { "code": "01.1", "name": "Some name 2", "level": "2"}, { "code": "01.11", "name": "Some name 3", "level": "3"}, { "code": "01.11.1", "name": "Some name 4", "level": "4"}, { "code": "01.11.11", "name": "Some name 5", "level": "5"}, { "code": "01.11.12", "name": "Some name 6", "level": "5"}]新數組將在 Ant Design Tree組件中使用,因此它應該具有以下結構:[ { key: '01', title: 'Some name 1', children: [ key: '01.1' title: 'Some name 2', children: [ { key: '01.11' title: 'Some name 3', children: [ { key: '01.11.1' title: 'Some name 4', children: [ { key: '01.11.11' title: 'Some name 5' }, { key: '01.11.12' title: 'Some name 6' } ] } ] } ] ] }]如何優化此功能以獲得所需的結果?
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
您可以創建一個解決方案,該解決方案將使用level屬性將當前對象推送到嵌套結構中的某個級別,并將其與引用和reduce方法結合起來。
const data = [{"code":"01","name":"Some name 1","level":"1"},{"code":"01.1","name":"Some name 2","level":"2"},{"code":"01.11","name":"Some name 3","level":"3"},{"code":"01.11.1","name":"Some name 4","level":"4"},{"code":"01.11.11","name":"Some name 5","level":"5"},{"code":"01.11.12","name":"Some name 6","level":"5"}]
const result = data.reduce((r, { level, ...rest }) => {
const value = { ...rest, children: [] }
r[level] = value.children;
r[level - 1].push(value)
return r;
}, [[]]).shift()
console.log(result)
添加回答
舉報
0/150
提交
取消