树形数据构造
//原始从服务器返回的数据 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));