/**
* 创建一个排序函数,包含三个参数
*
* @param Array arr: 需要处理的数据
* @param Array newArr: 用于存放处理后的数据
* @param Sting parentId: 当前的需要处理的父亲 parentId
* * @param Sting fId: 当前需要处理的孩子 fId
* 生成树结构数组
*/
util.sortArr = function(arr,parentId,fId){
// 创建一个临时数据用于存放数据
var copy = JSON.parse(JSON.stringify(arr));
// 创建一个存储数据的对象
var obj = {};
// 遍历数据,将数据所有数据添加到对象中,key为数据id,value为原数据对象
copy.forEach((item, index) => {
obj[item[fId]] = item;
});
// 创建一个最终返回的数组
var res = [];
// 遍历数据开始处理
copy.forEach(item => {
// 将root数据添加进res数组, 因为数据使引用类型,子元素数据都会带过来,下面的循环会处理子元素数据
if (item[parentId] == '' || item.fDeep === 1) {
res.push(item);
}
let hasparent = copy.find((citem,cindex)=>{
return citem[fId] == item[parentId]
})
if(item[parentId] != '' && !hasparent && item.fDeep != 1){
res.push(item);
}
// 梳理子元素数据
for (var key in obj) {
//当一层元素id 和 二层元素pId一致,那么,二层遍历的元素就是一层遍历元素的children
if (item[fId] === obj[key][parentId]) {
// 处理数据children
if (item.children) {
item.children.push(obj[key]);
} else {
item.children = [obj[key]];
}
}
}
});
return res;
}
生成树结构对象
最新推荐文章于 2024-01-27 21:12:18 发布