Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Масив для google chart (https://javascript.ru/forum/dom-window/83425-masiv-dlya-google-chart.html)

ureech 04.12.2021 18:00

Масив для google chart
 
Привет. С сервера получаю массив
obj = [ "2021-10-04,45.00", "2021-10-06,45.50",...]
для графика нужно так
var data = google.visualization.arrayToDataTable([
          ['2004',  1000],
          ['2005',  1170],
          ['2006',  660],
          ['2007',  1030]
])

пример

Как получить такой массив, что бы первое значение(дата) было строкой, а второе числом?

рони 04.12.2021 18:10

ureech,
split(,) return [a, +b]

ureech 04.12.2021 18:13

Ок,спасибо,сейчас попробую.

рони 04.12.2021 18:21

Google Line Chart
 
ureech,

<html>
    <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
            google.charts.load('current', {'packages':['corechart']});
            google.charts.setOnLoadCallback(drawChart);
            const obj = [ "2021-10-04,45.00", "2021-10-06,45.50", "2021-10-07,90.50", "2021-10-14,10.50"];
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                    ['Day', 'Sales'], ...obj.map(v => {let [a,b] = v.split(','); return [a, +b]})
                ]);

                var options = {
                    title: 'Company Performance',
                    curveType: 'function',
                    legend: { position: 'bottom' }
                };

                var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));

                chart.draw(data, options);
            }
        </script>
    </head>
    <body>
        <div id="curve_chart" style="width: 900px; height: 500px"></div>
    </body>
</html>

ureech 04.12.2021 18:37

var item = [];
   var arr = [];
   var res = '';

for (let key in obj) {
    a = obj[key];
    arr = a.split(',');
    res = [arr[0],+arr[1]];
   item[key] = res;
  }


На выходе
Array(9) [ (2) […], (2) […], (2) […], (2) […], (2) […], (2) […], (2) […], (2) […], (2) […] ]
​
0: Array [ "2021-10-04", 45 ]
​
1: Array [ "2021-10-06", 45.5 ]
​
2: Array [ "2021-10-20", 40 ]
​
3: Array [ "2021-10-31", 45 ]
​
4: Array [ "2021-11-01", 45.5 ]
​
5: Array [ "2021-11-03", 40 ]
​
6: Array [ "2021-11-10", 45.5 ]
​
7: Array [ "2021-11-16", 50 ]
​
8: Array [ "2021-11-26", 45 ]
​
length: 9


График ругается,если подставляю
var data = google.visualization.arrayToDataTable([
item
        ]);

Data column(s) for axis #0 cannot be of type string×

ureech 04.12.2021 18:41

Не увидел вашего ответа,когда писал свой).

ureech 04.12.2021 18:53

А что означает троеточие?

ureech 04.12.2021 18:59

Работает только в FF. В Опере и Хроме такая ошибка
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
    at drawChart (google.js:44)
    at Object.success (google.js:82)
    at c (jquery.js:2)
    at Object.fireWith [as resolveWith] (jquery.js:2)
    at l (jquery.js:2)
    at XMLHttpRequest.<anonymous> (jquery.js:2)

рони 04.12.2021 18:59

Цитата:

Сообщение от ureech
А что означает троеточие?

в данном случае это замена flat

было [[],[],[]] стало [],[],[]

ureech 04.12.2021 18:59

Понимаю, что не из за вашего кода,но как это поправить?


Часовой пояс GMT +3, время: 12:01.