亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從平面對象數組創建嵌套對象數組(最多 5 層)

從平面對象數組創建嵌套對象數組(最多 5 層)

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)


查看完整回答
反對 回復 2023-05-11
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號