树形数据构造

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

猜你喜欢

转载自www.cnblogs.com/zlog/p/10312933.html