【问题标题】:Rearrange JSON object to show in jspdf-autotable重新排列 JSON 对象以在 jspdf-autotable 中显示
【发布时间】:2021-05-11 05:37:12
【问题描述】:

我有以下对象,我需要重新排列。请帮我将其从以下格式转换。 我正在从 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",
        "designation": "DRIVER",
        "name": "PANKAJ YADAV",
        "salary": 10200
    },
    {
        "location": "OFFICE",
        "designation": "DRIVER",
        "name": "AJIT YADAV",
        "salary": 9100
    },
    {
        "location": "OFFICE",
        "designation": "DRIVER",
        "name": "AVIJIT BHOWMICK",
        "salary": 9500
    },
    {
        "location": "OUTLETS",
        "designation": "SWEETS",
        "name": "ARUN DAS",
        "salary": 10200
    },
    {
        "location": "FACTORY",
        "designation": "STAFF",
        "name": "RAJESH KUMAR YADAV",
        "salary": 18000
    },
    {
        "location": "OFFICE",
        "designation": "DRIVER",
        "name": "AMIT RAM",
        "salary": 9000
    },
    {
        "location": "OUTLETS",
        "designation": "SALES BOY",
        "name": "RAKESH HAZRA",
        "salary": 9500
    },
    {
        "location": "FACTORY",
        "designation": "DRIVER",
        "name": "MD AKHTER",
        "salary": 9000
    }
]

我需要以下格式。

[
    {
        "location": "OFFICE",
        "designation": "SWEETS",
        data: [
            {
                "location": "OFFICE",
                "designation": "SWEETS",
                "name": "BHOROT DOLUI",
                "salary": 9500
            }
        ],
    },
    {
        "location": "OFFICE",
        "designation": "DRIVER",
        "data": [
            {
                "location": "OFFICE",
                "designation": "DRIVER",
                "name": "AJIT YADAV",
                "salary": 9100
            },
            {
                "location": "OFFICE",
                "designation": "DRIVER",
                "name": "AVIJIT BHOWMICK",
                "salary": 9500
            },
            {
                "location": "OFFICE",
                "designation": "DRIVER",
                "name": "AMIT RAM",
                "salary": 9000
            },
        ]
    },
    {
        "location": "OFFICE",
        "designation": "STAFF",
        "data": [
            {
                "location": "OFFICE",
                "designation": "STAFF",
                "name": "NANDU YADAV",
                "salary": 11000
            },
        ]
    },
    {
        "location": "FACTORY",
        "designation": "DRIVER",
        "data": [
            {
                "location": "FACTORY",
                "designation": "DRIVER",
                "name": "SOUMEN PAL",
                "salary": 10000
            },
            {
                "location": "FACTORY",
                "designation": "DRIVER",
                "name": "MD AKHTER",
                "salary": 9000
            }
        ]
    },
    {
        "location": "FACTORY",
        "designation": "STAFF",
        "data": [
            {
                "location": "FACTORY",
                "designation": "STAFF",
                "name": "RAJESH KUMAR YADAV",
                "salary": 18000
            }
        ]
    },
    {
        "location": "OUTLETS",
        "designation": "DRIVER",
        "data": [
            {
                "location": "OUTLETS",
                "designation": "DRIVER",
                "name": "PANKAJ YADAV",
                "salary": 10200
            },
        ]
    },
    {
        "location": "OUTLETS",
        "designation": "SWEETS",
        "data": [
            {
                "location": "OUTLETS",
                "designation": "SWEETS",
                "name": "ARUN DAS",
                "salary": 10200
            }
        ]
    },
    {
        "location": "OUTLETS",
        "designation": "SALES BOY",
        "data": [
            {
                "location": "OUTLETS",
                "designation": "SALES BOY",
                "name": "RAKESH HAZRA",
                "salary": 9500
            }
        ]
    }
]

【问题讨论】:

  • Stack Overflow 不是代码编写服务。请不要只提供一些要求并期望代码作为结果。尝试自己解决问题并详细说明您在尝试解决问题时遇到的问题/

标签: javascript json reactjs object jspdf-autotable


【解决方案1】:

您可以使用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",
    designation: "DRIVER",
    name: "PANKAJ YADAV",
    salary: 10200,
  },
  {
    location: "OFFICE",
    designation: "DRIVER",
    name: "AJIT YADAV",
    salary: 9100,
  },
  {
    location: "OFFICE",
    designation: "DRIVER",
    name: "AVIJIT BHOWMICK",
    salary: 9500,
  },
  {
    location: "OUTLETS",
    designation: "SWEETS",
    name: "ARUN DAS",
    salary: 10200,
  },
  {
    location: "FACTORY",
    designation: "STAFF",
    name: "RAJESH KUMAR YADAV",
    salary: 18000,
  },
  {
    location: "OFFICE",
    designation: "DRIVER",
    name: "AMIT RAM",
    salary: 9000,
  },
  {
    location: "OUTLETS",
    designation: "SALES BOY",
    name: "RAKESH HAZRA",
    salary: 9500,
  },
  {
    location: "FACTORY",
    designation: "DRIVER",
    name: "MD AKHTER",
    salary: 9000,
  },
];

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, designation, data: [{ ...curr }] });
  }
  return acc;
}, []);

console.log(result);

【讨论】:

  • 非常感谢。我对你的反应时间感到震惊。再一次非常感谢你。 @SAM
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多