问题描述
我有以下对象,需要重新排列。请帮我将其从以下格式转换。 我正在从 Web 服务接收 Json 数组。我需要在 japdf-autotable 中显示。 我已经能够格式化表格并猜测以下数据结构应该可以工作。
如果有人有更好的想法也可以给我建议。
[
{
"location": "OFFICE","designation": "SWEETS","name": "BHOROT DOLUI","salary": 9500
},{
"location": "FACTORY","designation": "DRIVER","name": "SOUMEN PAL","salary": 10000
},{
"location": "OFFICE","designation": "STAFF","name": "NANDU YADAV","salary": 11000
},{
"location": "OUTLETS","name": "PANKAJ YADAV","salary": 10200
},"name": "AJIT YADAV","salary": 9100
},"name": "AVIJIT BHOWMICK","name": "ARUN DAS","name": "RAJESH KUMAR YADAV","salary": 18000
},"name": "AMIT RAM","salary": 9000
},"designation": "SALES BOY","name": "RAKESH HAZRA","name": "MD AKHTER","salary": 9000
}
]
我需要以下格式。
[
{
"location": "OFFICE",data: [
{
"location": "OFFICE","salary": 9500
}
],},"data": [
{
"location": "OFFICE","salary": 9100
},{
"location": "OFFICE","salary": 9500
},"salary": 9000
},]
},"salary": 11000
},"data": [
{
"location": "FACTORY","salary": 10000
},{
"location": "FACTORY","salary": 9000
}
]
},"salary": 18000
}
]
},"data": [
{
"location": "OUTLETS","salary": 10200
},"salary": 10200
}
]
},"salary": 9500
}
]
}
]
解决方法
轻松实现此目的
const arr = [
{
location: "OFFICE",designation: "SWEETS",name: "BHOROT DOLUI",salary: 9500,},{
location: "FACTORY",designation: "DRIVER",name: "SOUMEN PAL",salary: 10000,{
location: "OFFICE",designation: "STAFF",name: "NANDU YADAV",salary: 11000,{
location: "OUTLETS",name: "PANKAJ YADAV",salary: 10200,name: "AJIT YADAV",salary: 9100,name: "AVIJIT BHOWMICK",name: "ARUN DAS",name: "RAJESH KUMAR YADAV",salary: 18000,name: "AMIT RAM",salary: 9000,designation: "SALES BOY",name: "RAKESH HAZRA",name: "MD AKHTER",];
const result = arr.reduce((acc,curr) => {
const { location,designation,name,salary } = curr;
const findEl = acc.find((o) => o.designation === designation && o.location === location);
if (findEl) {
findEl.data.push(curr);
} else {
acc.push({ location,data: [{ ...curr }] });
}
return acc;
},[]);
console.log(result);