重新排列 JSON 对象以显示在 jspdf-autotable 中

问题描述

我有以下对象,需要重新排列。请帮我将其从以下格式转换。 我正在从 Web 服务接收 Json 数组。我需要在 japdf-autotable 中显示。 我已经能够格式化表格并猜测以下数据结构应该可以工作。

如果有人有更好的想法也可以给我建议。

enter image description here

[
    {
        "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
            }
        ]
    }
]

解决方法

您可以使用 reducefind

轻松实现此目的

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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...