Создать строку JSON из карты с массивами в качестве записей - PullRequest
0 голосов
/ 15 ноября 2018

Моим объектом структуры данных является Карта со следующей структурой:

{
  "2018-09-25":[0,1,2,0,8],
  "2018-10-17":[0,2,0,0,0],
  "2018-10-26":[0,2,1,0,0],
  "2018-10-29":[0,2,2,1,0],
  "2018-10-31":[0,3,2,1,0],
  "2018-11-01":[0,3,3,1,0],
  "2018-11-02":[0,4,4,1,0]
}

Я использую JSON.stringify, а затем JSON.parse. Однако мне нужно, чтобы элементы были как-то названы, чтобы я мог ссылаться на них (например, при рисовании диаграммы). Я попробовал следующее, но я получаю NaN в качестве значения.

data = Object.keys(data).map(function (k) { 
        return {date: new Date(k), value: +data[k]};
      });

Я бы хотел что-то вроде этого:

Ключ: «2018-09-25»
1: 0
2: 1
3: 2
4: 0
5: 8

1 Ответ

0 голосов
/ 15 ноября 2018

Поскольку вы используете map(), похоже, что вы хотите массив в качестве конечного результата.Но, поскольку массив будет другого размера, map() на самом деле не работает.Вы можете использовать Reduce, чтобы сгладить внутренние массивы в один большой массив:

let o = {"2018-09-25":[0,1,2,0,8],
         "2018-10-17":[0,2,0,0,0],
         "2018-10-26":[0,2,1,0,0],
         "2018-10-29":[0,2,2,1,0],
         "2018-10-31":[0,3,2,1,0],
         "2018-11-01":[0,3,3,1,0],
         "2018-11-02":[0,4,4,1,0]
        }
let newAr = Object.entries(o).reduce((arr, [key, values]) => {
    return arr.concat(values.map(n => ({date: new Date(key), value: n})))
}, [])

console.log(newAr)

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...