亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - js寫一個遞歸把數(shù)據(jù)結構重組成另外的結構

瀏覽:161日期:2023-05-01 11:22:51

問題描述

現(xiàn)在有以下數(shù)據(jù)結構:

[{ id: 1, pid: 0, name: '年級'}, { id: 2, pid: 1, name: '一年級'}, { id: 3, pid: 1, name: '二年級'}, { id: 4, pid: 0, name: '專業(yè)'}, { id: 5, pid: 4, name: '單片機開發(fā)'}]

寫一個JS方法,將其轉換成以下格式數(shù)據(jù):

[{ id: 1, pid: 0, name: '年級', children: [{id: 2,pid: 1,name: '一年級' }, {id: 3,pid: 1,name: '二年級' }]}, { id: 4, pid: 0, name: '專業(yè)', children: [{id: 5,pid: 4,name: '單片機開發(fā)' }]}]

問題解答

回答1:

var list = [{ id: 1, pid: 0, name: '年級'}, { id: 2, pid: 1, name: '一年級'}, { id: 3, pid: 1, name: '二年級'}, { id: 4, pid: 0, name: '專業(yè)'}, { id: 5, pid: 4, name: '單片機開發(fā)'}];function parseList (list) { var map = {}; list.forEach(function (item) {if (!map[item.id]) { map[item.id] = item; } }); list.forEach(function (item) {if (item.pid != 0) { map[item.pid].chidren ? map[item.pid].chidren.push(item) : map[item.pid].chidren = [item];} }); return list.filter(function (item) {return item.pid === 0; });}var newList = parseList(list);回答2:

var list = [ { id: 1, pid: 0, name: '年級' }, { id: 2, pid: 1, name: '一年級' }, { id: 3, pid: 1, name: '二年級' }, { id: 4, pid: 0, name: '專業(yè)' }, { id: 5, pid: 4, name: '單片機開發(fā)' }];// 生成查找表,可以按 id 查到節(jié)點const dict = list.reduce((all, item) => { all[item.id] = item; return all;}, {});// 由于原始數(shù)據(jù)沒有 id 為 0 的根節(jié)點,// 這里模擬一個,最終它的 children 就是實際的所有根節(jié)點var root = { id: 0};dict[0] = root;// 循環(huán)添加關系list.forEach(item => { const parent = dict[item.pid]; // 確保父節(jié)點的 children 存在 parent.children = parent.children || []; parent.children.push(item);});// 輸出結果 root.children// 注意,root 不是結果,root.children 才是console.log(JSON.stringify(root.children, null, 4));

javascript - js寫一個遞歸把數(shù)據(jù)結構重組成另外的結構

回答3:

參考一下

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}, [])

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 精品一区二区三区视频在线观看 | 黄片毛片大全 | 中文字幕在线播放第一页 | 日韩视频在线观看免费 | 精品自在线| 日本一级大黄毛片免费基地 | 大桥未久日韩欧美亚洲国产 | 污网站免费 | 欧美色欧美亚洲高清在线观看 | 国产九色在线播放 | 国产免费网站看v片元遮挡 国产免费自拍 | 免费一级特黄特色大片在线观看看 | 婷婷综合色伊人阁 | 欧美日韩国产高清精卡 | 欧美一区二区在线免费观看 | 免费看国产精品久久久久 | 成人性生交大片免费看4 | 欧美日韩在线观看精品 | 涩涩色中文综合亚洲 | 日韩v片| 分享一个无毒不卡免费国产 | 欧美一区二区三区成人看不卡 | 国产高清视频免费在线观看 | 日韩国产 | 青青国产成人久久激情91麻豆 | 一区二区在线视频观看 | 国内精品线在线观看 | xzl仙踪林一区 | 麻豆精品永久免费视频 | 三级黄色毛片网站 | 91入口 | 一区二区视频在线观看免费的 | 成人精品视频一区二区在线 | 国产chiese在线视频 | 久久99精品久久久久久久野外 | 日韩特黄 | 男人的天堂色 | 国产视频在线免费观看 | 日韩在线观看一区二区不卡视频 | 欧美一区二区三区在线观看免费 | 久久久噜噜噜久久中文字幕色伊伊 |