Как я могу отформатировать мой массив объектов в JavaScript? - PullRequest
0 голосов
/ 07 ноября 2019

Нужно отформатировать мой массив объектов, чтобы иметь вложенный объект.

Попытка с использованием карты и уменьшение. Кажется, не получается правильно отформатировать. В настоящее время получаем это.

[
  {
    "date": "2019-10-01T00:00:00Z",
    "total": 20
  }
]

Нужно быть в этом формате.

[
  {
    name: 'Total Call Volume',
    data: {
      '2019-01-01 00:00:00 -0800': 0,
      '2019-01-01 00:00:00 -0800': 88,

    }
  }
]
var arr = this.$store.state.aggregatedCallVolumeData;
var mapData = arr.map(item => ({
  date: item.startTime,
  total: item.dataValues.TOTAL_CALL_VOLUME
}));
var data = mapData.reduce((acc, value) => {
  acc[value.date] = acc[value.date] ? acc[value.date] : [];
  acc[value.date] ? acc[value.date].push(value.total) : [value.total];
  return acc;
}, {});

let result = Object.entries(data).map(d => ({ id: d[0] + ':' + d[1] }) );
console.log(result)

вывод консоли

0: {id: "2019-10-27T00:00:00Z:0"}
1: {id: "2019-10-28T00:00:00Z:88"}

1 Ответ

0 голосов
/ 07 ноября 2019
arr.reduce((obj, item) => {
  obj.data[item.date] = item.total;
  return obj;
}, {
  name: 'Total Call Volume',
  data: {}
})

что-то в этом роде. Возможно, вам придется переключаться между параметрами «obj» и «item». По сути, параметр obj является вторым аргументом в функции приведения. Таким образом, объект является тем базовым объектом, который я добавил в конце, а параметр 'item' - это каждый элемент в массиве. Таким образом, мы зациклились и продолжаем добавлять значения в 'obj' и возвращаем его для следующего цикла, чтобы добавить к

...