//原始从服务器返回的数据
const temp = [
{"categoryId":7, "parent":0, "name":"test0"},
{"categoryId":8, "parent":0, "name":"test1"},
{"categoryId":9, "parent":0, "name":"test2"},
{"categoryId":68, "parent":0, "name":"test3"},
{"categoryId":349, "parent":0, "name":"test4"},
{"categoryId":74, "parent":7, "name":"test5"},
{"categoryId":20, "parent":8, "name":"test6"},
{"categoryId":21, "parent":8, "name":"test7"},
{"categoryId":67, "parent":8, "name":"test8"},
{"categoryId":185, "parent":9, "name":"test9"},
{"categoryId":186, "parent":68, "name":"test10"},
{"categoryId":187, "parent":68, "name":"test11"},
{"categoryId":188, "parent":68, "name":"test12"},
{"categoryId":189, "parent":68, "name":"test13"},
{"categoryId":190, "parent":185, "name":"test14"},
{"categoryId":191, "parent":185, "name":"test15"},
{"categoryId":192, "parent":185, "name":"test16"},
{"categoryId":350, "parent":349, "name":"test17"},
{"categoryId":351, "parent":349, "name":"test18"},
];
//想要改造成的数据:
[
{"categoryId":7,"parent":0,"name":"test0",
"children":[{"categoryId":74,"parent":7,"name":"test5"}]},
{"categoryId":8,"parent":0,"name":"test1",
"children":[{"categoryId":20,"parent":8,"name":"test6"},
{"categoryId":21,"parent":8,"name":"test7"},
{"categoryId":67,"parent":8,"name":"test8"}]},
{"categoryId":9,"parent":0,"name":"test2",
"children":[{"categoryId":185,"parent":9,"name":"test9",
"children":[{"categoryId":190,"parent":185,"name":"test14"},
{"categoryId":191,"parent":185,"name":"test15"},
{"categoryId":192,"parent":185,"name":"test16"}]}]},
{"categoryId":68,"parent":0,"name":"test3",
"children":[{"categoryId":186,"parent":68,"name":"test10"},
{"categoryId":187,"parent":68,"name":"test11"},
{"categoryId":188,"parent":68,"name":"test12"},
{"categoryId":189,"parent":68,"name":"test13"}]},
{"categoryId":349,"parent":0,"name":"test4",
"children":[{"categoryId":350,"parent":349,"name":"test17"},
{"categoryId":351,"parent":349,"name":"test18"}]}
]
function arrayHandle(arr) {
arr.forEach(data => {
objectHandle(data);
});
return arr;
}
function objectHandle(obj) {
const items = temp.filter(data => data.parent === obj.categoryId);
if (items.length) {
if (obj.children) {
obj.children.concat(items);
} else {
obj.children = items;
}
return arrayHandle(items);
} else {
return obj;
}
}
//这步将返回构造的数据
arrayHandle(temp.filter(data => data.parent === 0));