该方法可以将平级结构的数据转化为树形结构的数据

// 里面用到了lodash,第三方的方法,如果不了解可以先学习一下

export default {

    // 平级数据变成树形数据

    datatree: (datas, idprop, pIdprop) => {

        if (!idprop) {

            idprop = 'id';

        }

        if (!pIdprop) {

            pIdprop = 'parentId';

        }

        let nodes = [],

            c = function (obj) {

                let _c = [];

                for (let i = 0; i < datas.length; i++) {

                    let _d = _.cloneDeep(datas[i]);

                    if (_d[pIdprop + ''] == obj[idprop + '']) {

                        _c.push(_d);

                        c(_d);

                    }

                }

                if (_c.length) {

                    obj.children = _c;

                }

            };

        for (let i = 0; i < datas.length; i++) {

            let _d = _.cloneDeep(datas[i]);

            if ((!_d[pIdprop + ''] && _d[pIdprop + ''] != '') || (!_.result(_.find(datas, {

                [idprop]: _d[pIdprop + '']

            }), idprop))) {

                c(_d);

                nodes.push(_d);

            }

        }

        return nodes;

    },

}

你可能感兴趣的:(该方法可以将平级结构的数据转化为树形结构的数据)