rushirajsinh rana
rushirajsinh rana

Reputation: 45

Manipulate JavaScript Array for displaying in HTML Table

I am getting results from my MySQL in an array like this:

    [ RowDataPacket {
        Shipper_Name: 'SONA CEREAL PRODUCTS PRIVATE LIMITED',
        Job_ID: 6,
        ShipperInvoiceNo: '12',
        Packing: '4X10Kgs',
        TotalBags: 4000,
        receivedbags: null,
        Diff: null },
      RowDataPacket {
        Shipper_Name: 'AGROW ALLIED VENTURES P LTD',
        Job_ID: 7,
        ShipperInvoiceNo: '0129-20',
        Packing: '1X30Kgs',
        TotalBags: 4800,
        receivedbags: 3670,
        Diff: -1130 },
      RowDataPacket {
        Shipper_Name: 'ATLANTIC CROP SCIENCE P LTD',
        Job_ID: 8,
        ShipperInvoiceNo: '0334/20-21',
        Packing: '8X5Kgs',
        TotalBags: 8758,
        receivedbags: 8758,
        Diff: 0 },
      RowDataPacket {
        Shipper_Name: 'ATLANTIC CROP SCIENCE P LTD',
        Job_ID: 8,
        ShipperInvoiceNo: '0334/20-21',
        Packing: '1X40Kgs',
        TotalBags: 1800,
        receivedbags: 1800,
        Diff: 0 },
      RowDataPacket {
        Shipper_Name: 'ATLANTIC CROP SCIENCE P LTD',
        Job_ID: 8,
        ShipperInvoiceNo: '0334/20-21',
        Packing: '4X10Kgs',
        TotalBags: 4130,
        receivedbags: 530,
        Diff: -3600 } ]

Now I want to convert this JSON data or array to the array below as I want to fill a html table with this data.

    [{"Shipper_Name":"SONA CEREAL PRODUCTS PRIVATE LIMITED"},{"Job_ID":"6","ShipperInvoiceNo": "12","Packing": "4X10Kgs","TotalBags": "4000","receivedbags": "null","Diff": "null"},{"Shipper_Name": "AGROW ALLIED VENTURES P LTD"},{"Job_ID": "7","ShipperInvoiceNo": "0129-20","Packing": "1X30Kgs","TotalBags": "4800","receivedbags": "3670","Diff": "-1130" },{"Shipper_Name": "ATLANTIC CROP SCIENCE P LTD"},{"Job_ID": "8","ShipperInvoiceNo": "0334/20-21","Packing": "8X5Kgs","TotalBags": "8758","receivedbags": "8758","Diff": "0"},{"Job_ID": "8","ShipperInvoiceNo": "0334/20-21","Packing": "1X40Kgs","TotalBags": "1800","receivedbags": "1800","Diff": "0"},{"Job_ID": "8","ShipperInvoiceNo": "0334/20-21","Packing": "4X10Kgs","TotalBags": "4130","receivedbags": "530", "Diff": "-3600" }]

Upvotes: 0

Views: 59

Answers (1)

slacker
slacker

Reputation: 564

Assuming you have setup the input as

let input = [{ Shipper_Name: ... }, {...}, ...];

Then the following code would do the trick

let output = [];
let shipperName = null;
for (let ii = 0; ii < input.length; ii++) {
  let val = input[ii];
  if (val["Shipper_Name"] !== shipperName) {
    shipperName = val["Shipper_Name"];
    output.push({Shipper_Name: shipperName});
  }
  let copy = JSON.parse(JSON.stringify(val));
  delete copy["Shipper_Name"];
  output.push(copy);
}

console.log(output);

Upvotes: 1

Related Questions