笔记
Home
Vuepress
javascript
  • x系列
  • Markdown
  • SCADA
  • 微信小程序
  • weui.js
  • 工作笔记
网址收藏夹
Home
Vuepress
javascript
  • x系列
  • Markdown
  • SCADA
  • 微信小程序
  • weui.js
  • 工作笔记
网址收藏夹
  • 常用网站
  • x系列

代码笔记

功能函数

数组转树形结构

数组结构如下:

var source = [{
    id: 1,
    pid: 0,
    name: 'body'
}, {
    id: 2,
    pid: 1,
    name: 'title'
}, {
    id: 3,
    pid: 1,
    name: 'div'
}, {
    id: 4,
    pid: 3,
    name: 'span'
}, {
    id: 5,
    pid: 3,
    name: 'icon'
}, {
    id: 6,
    pid: 4,
    name: 'subspan'
}]

转树形结构功能函数

function toTree(data) {
    let result = []
    if(!Array.isArray(data)) {
        return result
    }
    data.forEach(item => {
        delete item.children;
    });
    let map = {};
    data.forEach(item => {
        map[item.id] = item;
    });
    data.forEach(item => {
        let parent = map[item.pid];
        if(parent) {
            (parent.children || (parent.children = [])).push(item);
        } else {
            result.push(item);
        }
    });
    return result;
}

打印结果如下