上传接口excel后获取表格数据,把一维数组组装成多维数组。
const resData = [
{
"scope": "response",
"name": "响应参数:",
"children": []
},
{
"scope": "response",
"name": "业务字段名称",
"type": "类型",
"required": "必须",
"description": "说明",
"children": []
},
{
"scope": "response",
"name": "code",
"type": "String",
"required": "是",
"description": "响应代号",
"children": []
},
{
"scope": "response",
"name": "msg",
"type": "String",
"required": "是",
"description": "响应信息",
"children": []
},
{
"scope": "response",
"name": "data",
"type": "Object",
"required": "是",
"description": "返回数据",
"children": []
},
{
"scope": "response",
"name": "dataStart",
"children": []
},
{
"scope": "response",
"name": "enquiryId",
"type": "Long",
"required": "是",
"description": "询价单号",
"children": []
},
{
"scope": "response",
"name": "tenantId",
"type": "String",
"required": "是",
"description": "公司",
"children": []
},
{
"scope": "response",
"name": "tenantName",
"type": "String",
"required": "是",
"description": "公司名称",
"children": []
},
{
"scope": "response",
"name": "cityName",
"type": "String",
"required": "是",
"description": "询价城市",
"children": []
},
{
"scope": "response",
"name": " plateNo",
"type": "String",
"required": "是",
"description": "车牌",
"children": []
},
{
"scope": "response",
"name": "userCarModelName",
"type": "String",
"required": "是",
"description": "车辆信息描述",
"children": []
},
{
"scope": "response",
"name": "address",
"type": "String",
"required": "是",
"description": "地址",
"children": []
},
{
"scope": "response",
"name": "enquiryTime",
"type": "Date",
"required": "是",
"description": "询价时间",
"children": []
},
{
"scope": "response",
"name": "contactName",
"type": "String",
"required": "是",
"description": "联系人",
"children": []
},
{
"scope": "response",
"name": "mobileNo",
"type": "String",
"required": "是",
"description": "手机号码",
"children": []
},
{
"scope": "response",
"name": "taskStatusName",
"type": "String",
"required": "是",
"description": "询价状态",
"children": []
},
{
"scope": "response",
"name": "enquiryDescribe",
"type": "String",
"required": "是",
"description": "任务描述",
"children": []
},
{
"scope": "response",
"name": "expireTime",
"type": "Date",
"required": "是",
"description": "过期时间",
"children": []
},
{
"scope": "response",
"name": "images",
"type": "List<String>",
"required": "是",
"description": "图片地址列表",
"children": []
},
{
"scope": "response",
"name": "enquirySubTaskList",
"type": "List",
"required": "是",
"description": "询价子任务列表",
"children": []
},
{
"scope": "response",
"name": "enquirySubTaskListStart",
"children": []
},
{
"scope": "response",
"name": "garageId",
"type": "Long",
"required": "是",
"description": "修理厂id",
"children": []
},
{
"scope": "response",
"name": "garageName",
"type": "String",
"required": "是",
"description": "修理厂名称",
"children": []
},
{
"scope": "response",
"name": "loginTime",
"type": "Date",
"required": "是",
"description": "登录时间",
"children": []
},
{
"scope": "response",
"name": "maintainItemNum",
"type": "Int",
"required": "是",
"description": "维修项目数量",
"children": []
},
{
"scope": "response",
"name": "address",
"type": "String",
"required": "是",
"description": "修理厂地址",
"children": []
},
{
"scope": "response",
"name": "contactNo",
"type": "String",
"required": "是",
"description": "修理厂电话",
"children": []
},
{
"scope": "response",
"name": "enquirySubId",
"type": "Long",
"required": "是",
"description": "子任务id",
"children": []
},
{
"scope": "response",
"name": "images",
"type": "List<String>",
"required": "是",
"description": "修理厂图片地址列表",
"children": []
},
{
"scope": "response",
"name": "subtaskStatus",
"type": "String",
"required": "是",
"description": "任务状态",
"children": []
},
{
"scope": "response",
"name": "maintainPredictPrice",
"type": "Decimal",
"required": "是",
"description": "维修总估价",
"children": []
},
{
"scope": "response",
"name": "basePrice",
"description": "报价基准值",
"children": []
},
{
"scope": "response",
"name": "priceDeparture",
"type": "String",
"required": "否",
"description": "报价偏离",
"children": []
},
{
"scope": "response",
"name": "resultFlag",
"type": "String",
"required": "是",
"description": "结果标识(标价过高,过低/推荐)",
"children": []
},
{
"scope": "response",
"name": "entryDay",
"type": "int",
"required": "是",
"description": "入驻天数",
"children": []
},
{
"scope": "response",
"name": "enquiryNum",
"type": "int",
"required": "是",
"description": "询价单数",
"children": []
},
{
"scope": "response",
"name": "planNum",
"type": "int",
"required": "是",
"description": "报价次数",
"children": []
},
{
"scope": "response",
"name": "contractNo",
"type": "String",
"required": "否",
"description": "联系人",
"children": []
},
{
"scope": "response",
"name": "itemList",
"type": "List",
"required": "是",
"description": "询价项目列表",
"children": []
},
{
"scope": "response",
"name": "itemListStart",
"children": []
},
{
"scope": "response",
"name": "manHourDTOList",
"type": "List",
"description": "工时费用对象集合",
"children": []
},
{
"scope": "response",
"name": "manHourDTOListStart",
"children": []
},
{
"scope": "response",
"name": "manHourGroup",
"type": "String",
"required": "是",
"description": "工时组",
"children": []
},
{
"scope": "response",
"name": "manHourSubGroup",
"type": "String",
"required": "是",
"description": "工时分组",
"children": []
},
{
"scope": "response",
"name": "manHourName",
"type": "String",
"required": "是",
"description": "工时名称",
"children": []
},
{
"scope": "response",
"name": "manHourCost",
"type": "BigDecimal",
"required": "是",
"description": "工时费",
"children": []
},
{
"scope": "response",
"name": "manHourDTOListEnd",
"children": []
},
{
"scope": "response",
"name": "enquiryMaintainItemDTOList",
"type": "List",
"description": "配件费用对象集合",
"children": []
},
{
"scope": "response",
"name": "enquiryMaintainItemDTOListStart",
"children": []
},
{
"scope": "response",
"name": "carAccessoriesName",
"description": "汽车配件名称",
"children": []
},
{
"scope": "response",
"name": "carAccessoriesQuality",
"description": "汽车配件品质",
"children": []
},
{
"scope": "response",
"name": "unitPrice",
"description": "配件单价",
"children": []
},
{
"scope": "response",
"name": "num",
"description": "数量",
"children": []
},
{
"scope": "response",
"name": "enquiryMaintainItemDTOListEnd",
"children": []
},
{
"scope": "response",
"name": "itemListEnd",
"children": []
},
{
"scope": "response",
"name": "enquirySubTaskListEnd",
"children": []
},
{
"scope": "response",
"name": "dataEnd",
"children": []
}
]
// 递归方法
function fib(array, index = 0, name1) {
let result = []
for (; index < array.length; index++) {
//终止循环
if(array[index].name === `${name1}Start`){
continue
}
// 跳出循环
if(array[index].name === `${name1}End`){
break
}
// 子项
if(array[index].type === 'Object' || array[index].type === 'List'){
let child = fib(array, index+1, array[index].name)
array[index].children = child.result
result.push(array[index])
index = child.index
}else{
result.push(array[index])
}
}
if(name1) {
return {result, index}
}
return result
}
console.log(fib(resData))