Манипулировать массивом JavaScript для отображения в таблице HTML

#javascript #html

#javascript #HTML

Вопрос:

Я получаю результаты от моего MySQL в виде такого массива:

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

Теперь я хочу преобразовать эти данные или массив JSON в приведенный ниже массив, поскольку я хочу заполнить HTML-таблицу этими данными.

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

Комментарии:

1. Не могли бы вы перепроверить и подтвердить, соответствует ли формат результирующего массива тому, который вы опубликовали? Я бы ожидал чего-то подобного [{ RowDataPacket: { ... } }, { RowDataPacket: { ... } }, ...] , а не [RowDataPacket { ... }, RowDataPacket { ... }, ...] .

Ответ №1:

Предполагая, что вы настроили ввод как

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

Тогда следующий код сделает свое дело

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