1

I pulled out the data from the database using JSON and received the data as below.

    var data = [
  {
    "view_id": "999999999",
    "month" : 01,
    "year" : 2017,
    "visit" : 2000
  },
  {
    "view_id": "999999999",
    "month" : 02,
    "year" : 2017,
    "visit" : 3000
  },
  {
    "view_id": "999999999",
    "month" : 01,
    "year" : 2018,
    "visit" : 4000
  },
   {
    "view_id": "999999999",
    "month" : 02,
    "year" : 2018,
    "visit" : 9000
  },
  {
    "view_id": "000000000",
    "month" : 01,
    "year" : 2017,
    "visit" : 6000
  },
  {
    "view_id": "000000000",
    "month" : 02,
    "year" : 2017,
    "visit" : 7000
  },
  {
    "view_id": "000000000",
    "month" : 01,
    "year" : 2018,
    "visit" : 12000
  },
  {
    "view_id": "000000000",
    "month" : 02,
    "year" : 2018,
    "visit" : 15000
  },
];

I would like to present the data in the table:

Table

However, my problem is to group the data so that it is for the given view_id and year.

Can you help me in this way to show me in the table as I showed you?

georgeawg
  • 48,608
  • 13
  • 72
  • 95
danko12
  • 79
  • 8

1 Answers1

0

Assuming, that the list is always ordered by view_id and date/year, this could be a solution:

var data = [
                {
                  "view_id": "999999999",
                  "month" : '01',
                  "year" : 2017,
                  "visit" : 2000
                },
                 {
                  "view_id": '999999999',
                  "month" : '02',
                  "year" : 2018,
                  "visit" : 9000
                },
                {
                  "view_id": '000000000',
                  "month" : '01',
                  "year" : 2018,
                  "visit" : 12000
                },
                {
                  "view_id": '000000000',
                  "month" : '02',
                  "year" : 2018,
                  "visit" : 15000
                },
              ];
              let last_view_id = '';
              let newData = [];
              data.forEach(element => {
                  
                  if(last_view_id === element.view_id) {
                    newData[(newData.length-1)].view_data.push(element);
                  } else {
                      last_view_id = element.view_id;
                      newData.push({
                          view_id: element.view_id,
                          view_data: [element]
                      });
                  }
              });
              console.log(newData);
Adel
  • 88
  • 2
  • 11