Вывод котировок на график через API

Есть скрипт графика акций, который нужно заполнить данными цены и даты так:

{ time: '2019-04-11', value: 80.01 },
{ time: '2019-04-12', value: 96.63 },
{ time: '2019-04-13', value: 76.64 },
{ time: '2019-04-14', value: 81.89 },
{ time: '2019-04-15', value: 74.43 },
//и т.д.

Данные я получаю в формате JSON через API Мосбиржи и в коде они выглядят так:

  { time: data['candles']['data'][1][7].split(' ')[0], value: data['candles']['data'][1][3]},
  { time: data['candles']['data'][2][7].split(' ')[0], value: data['candles']['data'][2][3]},
  { time: data['candles']['data'][3][7].split(' ')[0], value: data['candles']['data'][3][3]},
  { time: data['candles']['data'][4][7].split(' ')[0], value: data['candles']['data'][4][3]},
  { time: data['candles']['data'][5][7].split(' ')[0], value: data['candles']['data'][5][3]},
  { time: data['candles']['data'][6][7].split(' ')[0], value: data['candles']['data'][6][3]},
  // т.е. всего один параметр в каждом значении должен увеличиваться на единицу при каждой итерации
  //Функция split() обрезает строку с датой до нужного формата.


Выводя данные асинхронным fetch через document.write или console.log я получаю весь массив данных из 500 значений:

            <script>
    (async ()=>{
        let url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/SBER/candles.json?interval=24';
    fetch(url)
        let response = await fetch(url);
        let data = await response.json();
    for (start = 0; start < 500; start++) {
          console.log(data['candles']['data'][start][3]);
          document.write(data['candles']['data'][start][3]);
    }
        })();
    </script>

Однако пытаясь сделать это в цикле для графика, я получаю на графике только последние значение массива:

        <script>
      (async() => {
        let url = 'https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/SBER/candles.json?interval=24&start=0';
        let response = await fetch(url);
        let data = await response.json();
        for (count = 0; count < 500; count++) {
          areaSeries.setData([ //функция скрипта графика
            {
              time: data['candles']['data'][count][7].split(' ')[0],
              value: data['candles']['data'][count][3]
            },
          ]);
        }
      })();
   </script>

Подскажите каким образом я могу заполнить данными с этого API скрипт графика?

Ответы (1 шт):

Автор решения: Aziz Umarov

Думаю проблемы тут вместо

 for (count = 0; count < 500; count++) {
      areaSeries.setData([ //функция скрипта графика
        {
          time: data['candles']['data'][count][7].split(' ')[0],
          value: data['candles']['data'][count][3]
        },
      ]);
    }

Вы в цикле задаёте всегда новый масси с одним элементом.

Поставьте это

let result = data['candles']['data'].map(item=>(
       {
         time: item[7].split(' ')[0],
         value: item[3]
       }
    )
);   
areaSeries.setData([...result]);


    
→ Ссылка