扁平数组和树形结构数组相互转换
/**
* 将扁平结构数组数据转树状结构数组
* @param {array} listArr list扁平结构数组源数据
* @param {string} idField id字段名称
* @param {string} pidField parent id字段名称
* @param {string} childrenField 子节点字段名称
* @param {string} [sortField=''] -排序字段名称,默认空不排序
* @param {boolean} [isAsc=true] -排序方式,默认true为asc升序
* @returns {array} 返回树状结构数组
*/
function getTreeArr(listArr, idField, pidField, childrenField, sortField = '', isAsc =true) {
//克隆数据副本
let data = JSON.parse(JSON.stringify(listArr));
//转为树状结构数组
data= data.filter(father => {
let childArr = data.filter(child => father[idField] == child[pidField]);
childArr.length > 0 ? father[childrenField] = childArr : '';
return data.every(m => m[idField] != father[pidField])
});
//树状数组排序
if (sortField) {
var n = isAsc ? 1 : -1;
data = sortTree(data);
function sortTree(source) {