搜索

首页  >  问答  >  正文

javascript - js写一个递归把数据结构重组成另外的结构

现在有以下数据结构:

[{
    id: 1,
    pid: 0,
    name: "年级"
}, {
    id: 2,
    pid: 1,
    name: "一年级"
}, {
    id: 3,
    pid: 1,
    name: "二年级"
}, {
    id: 4,
    pid: 0,
    name: "专业"
}, {
    id: 5,
    pid: 4,
    name: "单片机开发"
}]

写一个JS方法,将其转换成以下格式数据:

[{
    id: 1,
    pid: 0,
    name: "年级",
    children: [{
        id: 2,
        pid: 1,
        name: "一年级"
    }, {
        id: 3,
        pid: 1,
        name: "二年级"
    }]
}, {
    id: 4,
    pid: 0,
    name: "专业",
    children: [{
        id: 5,
        pid: 4,
        name: "单片机开发"
    }]
}]
天蓬老师天蓬老师2775 天前1020

全部回复(3)我来回复

  • PHP中文网

    PHP中文网2017-06-28 09:29:56

    雷雷

    回复
    0
  • 学习ing

    学习ing2017-06-28 09:29:56

    雷雷

    回复
    0
  • 某草草

    某草草2017-06-28 09:29:56

    参考一下

    var sortedData = data.reduce((result, item) => {
      result[item.id] = Object.assign({}, item)
      return result
    }, [])
    
    var result = sortedData.reduce((result, item) => {
      if (item.pid === 0) {
        result.push(item)
      } else {
        if (sortedData[item.pid].children) {
          sortedData[item.pid].children.push(item)
        } else {
          sortedData[item.pid].children = [item]
        }
      }
      return result
    }, [])

    回复
    0
  • 取消回复