一组数组对象按id处理成类似省市区的格式,如何处理

[{
    "branchId": 1753,
    "catCode": "01",
    "catName": "日用品",
    "categoryType": 0,
    "createAt": "2019-05-30 16:10:12",
    "createBy": "System",
    "discount": false,
    "id": 3768,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:45:37",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "ryp",
    "parentCategoryType": null,
    "parentId": -1,
    "parentName": "所有分类",
    "scorePercent": 5.0,
    "scoreType": 2,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "02",
    "catName": "宠物用品",
    "categoryType": 0,
    "createAt": "2019-05-30 16:10:29",
    "createBy": "System",
    "discount": false,
    "id": 3769,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:45:37",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "cwyp",
    "parentCategoryType": null,
    "parentId": -1,
    "parentName": "所有分类",
    "scorePercent": null,
    "scoreType": 1,
    "scoreValue": 5.0,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "03",
    "catName": "水果",
    "categoryType": 0,
    "createAt": "2019-05-30 16:10:45",
    "createBy": "System",
    "discount": false,
    "id": 3770,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:45:37",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "sg",
    "parentCategoryType": null,
    "parentId": -1,
    "parentName": "所有分类",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "04",
    "catName": "蔬菜",
    "categoryType": 0,
    "createAt": "2019-05-30 16:10:52",
    "createBy": "System",
    "discount": false,
    "id": 3771,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:45:37",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "sc",
    "parentCategoryType": null,
    "parentId": -1,
    "parentName": "所有分类",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "05",
    "catName": "健身运动",
    "categoryType": 0,
    "createAt": "2019-05-30 16:11:11",
    "createBy": "System",
    "discount": false,
    "id": 3772,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 14:11:55",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "jsyd",
    "parentCategoryType": null,
    "parentId": -1,
    "parentName": "所有分类",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "0101",
    "catName": "厨房用品",
    "categoryType": 0,
    "createAt": "2019-05-30 16:11:30",
    "createBy": "System",
    "discount": false,
    "id": 3773,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:56:18",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "cfyp",
    "parentCategoryType": null,
    "parentId": 3768,
    "parentName": "日用品",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "0102",
    "catName": "洗浴用品",
    "categoryType": 0,
    "createAt": "2019-05-30 16:11:49",
    "createBy": "System",
    "discount": false,
    "id": 3774,
    "isDeleted": false,
    "lastUpdateAt": "2020-12-15 15:27:07",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "xyyp",
    "parentCategoryType": null,
    "parentId": 3768,
    "parentName": "日用品",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "0103",
    "catName": "家居必备",
    "categoryType": 0,
    "createAt": "2019-05-30 16:12:06",
    "createBy": "System",
    "discount": false,
    "id": 3775,
    "isDeleted": false,
    "lastUpdateAt": "2021-04-02 16:56:18",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "jjbb",
    "parentCategoryType": null,
    "parentId": 3768,
    "parentName": "日用品",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "0201",
    "catName": "狗狗",
    "categoryType": 0,
    "createAt": "2019-05-30 16:12:19",
    "createBy": "System",
    "discount": false,
    "id": 3776,
    "isDeleted": false,
    "lastUpdateAt": "2019-08-09 10:21:36",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "gg",
    "parentCategoryType": null,
    "parentId": 3769,
    "parentName": "宠物用品",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}, {
    "branchId": 1753,
    "catCode": "0202",
    "catName": "猫咪",
    "categoryType": 0,
    "createAt": "2019-05-30 16:12:30",
    "createBy": "System",
    "discount": false,
    "id": 3777,
    "isDeleted": false,
    "lastUpdateAt": "2019-08-09 10:21:36",
    "lastUpdateBy": "System",
    "localId": null,
    "mnemonics": "mm",
    "parentCategoryType": null,
    "parentId": 3769,
    "parentName": "宠物用品",
    "scorePercent": null,
    "scoreType": 0,
    "scoreValue": null,
    "store": false,
    "tenantId": 201419,
    "version": 0
}]

这一组数据根据parentId分组,如果parentId为-1,他就是父级,如果parentId等于父级的id,那他就是这个父级下面的子级
根据这个规则把这组数据处理成省市区的格式,子级对象的key用children表示,如何处理?

阅读 1.3k
1 个回答
const genenrateTreeData = (data) => {
  const mappingIdToNode = new Map();

  for (let i = 0; i < data.length; ++i) {
    mappingIdToNode.set(data[i].id, data[i]);
    data[i].children = [];
  }

  for (let i = 0; i < data.length; ++i) {
    if (data[i].parentId !== -1) {
      const parentNode = mappingIdToNode.get(data[i].parentId);
      parentNode.children.push(data[i]);
    }
  }

  return data.filter((v) => v.parentId === -1);
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题