在做项目的过程中,有个需求,将一段对象数组的数据整理成树形结构。刚好这段时间在看函数式编程,所以试着用函数式写了下:
从服务端获取到的数据格式,如下:
const data = [
{"id": "1", "parent": "0","name": "侠客行网络3001"},
{"id": "2", "parent": "0","name": "洛江金玉2号会员"},
{"id": "3", "parent": "0","name": "洛江金玉3号会员"},
{"id": "4", "parent": "1","name": "洛江金玉4号会员"},
{"id": "5", "parent": "1","name": "洛江金玉5号会员"},
{"id": "6", "parent": "4","name": "洛江金玉6号会员"},
{"id": "7", "parent": "5","name": "洛江金玉7号会员"},
{"id": "8", "parent": "5","name": "洛江金玉8号会员"},
]
接下来写两个函数,如下:
const getChildren = (data)=>{
return function (item) {
const arr = []
data.forEach((value)=>{
if(value.parent == item.id){
arr.push(value);
}
});
return arr;
}
}
export const generateTree = (data) =>{
const arr = [];
data.map((item)=>{
const list = getChildren(data)(item);
if(list.length > 0){
item['child'] = list;
}
if(item.type == 0){
arr.push(item);
}
})
return arr;
}
在组件里面调用 generateTree(data)
,写的感觉不是很到位,见笑了!