您当前的位置: 首页 >  Java

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JavaScript实现扁平数组结构与JSON树形结构相互转换、递归、reduce、continue、push、concat、for of

发布时间:2022-05-17 21:24:35 ,浏览量:0

目录
  • 1、扁平数组结构转换成JSON树形结构
  • 2、JSON树形结构转换成扁平数组结构
1、扁平数组结构转换成JSON树形结构
function convert(list) { let result = []; const map = list.reduce((pre, cur) => { pre[cur.id] = cur; return pre; }, {}); for (const item of list) { if (item.parentId === 0) { result.push(item); continue; } if (item.parentId in map) { let parent = map[item.parentId]; parent.children = parent.children || []; parent.children.push(item); } } return result; } let flatOriginData = [ { id: 5, parentId: 2, name: "目录1-1-1", }, { id: 1, parentId: 0, name: "目录1", }, { id: 13, parentId: 9, name: "目录2-2-3", }, { id: 3, parentId: 1, name: "目录1-2", }, { id: 2, parentId: 1, name: "目录1-1", }, { id: 12, parentId: 9, name: "目录2-2-2", }, { id: 4, parentId: 1, name: "目录1-3", }, { id: 7, parentId: 0, name: "目录2", }, { id: 9, parentId: 7, name: "目录2-2", }, { id: 6, parentId: 2, name: "目录1-1-2", }, { id: 11, parentId: 9, name: "目录2-2-1", }, { id: 8, parentId: 7, name: "目录2-1", }, { id: 10, parentId: 7, name: "目录2-3", }, ]; console.log('flatOriginData:', convert(flatOriginData)); // flatOriginData: (2) [{…}, {…}] 
2、JSON树形结构转换成扁平数组结构
function flatten(data) { return data.reduce((pre, cur) => { const { id, name, parentId, children = [] } = cur; return pre.concat([{ id, name, parentId }], flatten(children)); }, []); } let treeOriginData = [ { id: 1, parentId: 0, name: "目录1", children: [ { id: 3, parentId: 1, name: "目录1-2" }, { id: 2, parentId: 1, name: "目录1-1", children: [ { id: 5, parentId: 2, name: "目录1-1-1" }, { id: 6, parentId: 2, name: "目录1-1-2" } ] }, { id: 4, parentId: 1, name: "目录1-3" } ] }, { id: 7, parentId: 0, name: "目录2", children: [ { id: 9, parentId: 7, name: "目录2-2", children: [ { id: 13, parentId: 9, name: "目录2-2-3" }, { id: 12, parentId: 9, name: "目录2-2-2" }, { id: 11, parentId: 9, name: "目录2-2-1" } ] }, { id: 8, parentId: 7, name: "目录2-1" }, { id: 10, parentId: 7, name: "目录2-3" } ] } ]; console.log('treeOriginData:', flatten(treeOriginData)); // treeOriginData: (13) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] 
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3918s