// 数组转tree
function composeTree(list = []) {
const data = JSON.parse(JSON.stringify(list)) // 浅拷贝不改变源数据
const result = []
if (!Array.isArray(data)) {
return result
}
data.forEach(item => {
delete item.children
})
const map = {}
data.forEach(item => {
map[item.id] = item
})
console.log(map)
data.forEach(item => {
const parent = map[item.pid] // const 常量对象,存储的是内存地址,类似于指针
if (parent) {
(parent.children || (parent.children = [])).push(item)
} else {
result.push(item)
}
})
return result
}
var data = [
{
"id": 453,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "下单",
"objectType": "/business/bank/order",
"actionKey": "bankorder:create",
"method": "GET",
"remarks": "auto created",
"pid": 445,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 446,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "对账文件管理",
"objectType": "/admin/bindcardtollrecord",
"actionKey": null,
"method": "GET",
"remarks": null,
"pid": 0,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 457,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "前端卡片发行通知",
"objectType": "/admin/bank/order",
"actionKey": "admin:order:noticeCard",
"method": "GET",
"remarks": "auto created",
"pid": 452,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 445,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "银行下单签约",
"objectType": "/business/bank/order",
"actionKey": null,
"method": "GET",
"remarks": null,
"pid": 0,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 450,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "撤单",
"objectType": "/business/bank/order",
"actionKey": "bankorder:cancel",
"method": "GET",
"remarks": "auto created",
"pid": 445,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 454,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "查询订单",
"objectType": "/business/bank/order",
"actionKey": "bankorder:query",
"method": "GET",
"remarks": "auto created",
"pid": 445,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 456,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "单个生成快递信息",
"objectType": "/admin/express",
"actionKey": "admin:express:place",
"method": "GET",
"remarks": "auto created",
"pid": 447,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 451,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "变更绑定信息",
"objectType": "/business/bank/order",
"actionKey": "bankorder:change",
"method": "GET",
"remarks": "auto created",
"pid": 445,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 455,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "对账文件查询",
"objectType": "/admin/bindcardtollrecord",
"actionKey": "admin:bindcardtollrecord",
"method": "GET",
"remarks": "auto created",
"pid": 446,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 459,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "分页查询银行推送过来的订单",
"objectType": "/admin/bank/order",
"actionKey": "admin:order:list",
"method": "GET",
"remarks": "auto created",
"pid": 448,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 444,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "货车查询",
"objectType": "/business/truck",
"actionKey": null,
"method": "GET",
"remarks": null,
"pid": 0,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 458,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "查询营销方案",
"objectType": "/admin/bank/order",
"actionKey": "admin:order:market",
"method": "GET",
"remarks": "auto created",
"pid": 448,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 460,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "修改地址",
"objectType": "/admin/bank/order",
"actionKey": "admin:order:address",
"method": "GET",
"remarks": "auto created",
"pid": 448,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 447,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "快递管理",
"objectType": "/admin/express",
"actionKey": null,
"method": "GET",
"remarks": null,
"pid": 0,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 449,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "查询货车信息",
"objectType": "/business/truck",
"actionKey": "truck:info",
"method": "GET",
"remarks": "auto created",
"pid": 444,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 461,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "查询银行推送过来的订单详情",
"objectType": "/admin/bank/order",
"actionKey": "admin:order:order",
"method": "GET",
"remarks": "auto created",
"pid": 448,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 452,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "唯一性校验",
"objectType": "/business/bank/order",
"actionKey": "bankorder:checkVehicle",
"method": "GET",
"remarks": "auto created",
"pid": 445,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
},
{
"id": 448,
"createdBy": "ANONYMOUS",
"createdDate": "2020-11-27T09:04:18",
"lastModifiedBy": "ANONYMOUS",
"lastModifiedDate": "2020-11-27T09:04:18",
"name": "后台管理订单",
"objectType": "/admin/bank/order",
"actionKey": null,
"method": "GET",
"remarks": null,
"pid": 0,
"orderNo": null,
"clientId": "gxetc-micro-b2bbank",
"children": null,
"grantOption": null
}
]
let a = composeTree(data)
// console.log(a)
console