04.12.2021, 18:00
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
Масив для 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
ureech,
split(,) return [a, +b]
|
|
04.12.2021, 18:13
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
Ок,спасибо,сейчас попробую.
|
|
04.12.2021, 18:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
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>
|
|
04.12.2021, 18:37
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
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×
|
|
04.12.2021, 18:41
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
Не увидел вашего ответа,когда писал свой).
|
|
04.12.2021, 18:53
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
А что означает троеточие?
|
|
04.12.2021, 18:59
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
Работает только в 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Сообщение от ureech
|
А что означает троеточие?
|
в данном случае это замена flat
было [[],[],[]] стало [],[],[]
|
|
04.12.2021, 18:59
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 768
|
|
Понимаю, что не из за вашего кода,но как это поправить?
|
|
|
|