Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2021, 18:00
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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]
])

пример

Как получить такой массив, что бы первое значение(дата) было строкой, а второе числом?
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2021, 18:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

ureech,
split(,) return [a, +b]
Ответить с цитированием
  #3 (permalink)  
Старый 04.12.2021, 18:13
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 768

Ок,спасибо,сейчас попробую.
Ответить с цитированием
  #4 (permalink)  
Старый 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>
Ответить с цитированием
  #5 (permalink)  
Старый 04.12.2021, 18:37
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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×
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2021, 18:41
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 768

Не увидел вашего ответа,когда писал свой).
Ответить с цитированием
  #7 (permalink)  
Старый 04.12.2021, 18:53
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 768

А что означает троеточие?
Ответить с цитированием
  #8 (permalink)  
Старый 04.12.2021, 18:59
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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)
Ответить с цитированием
  #9 (permalink)  
Старый 04.12.2021, 18:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от ureech
А что означает троеточие?
в данном случае это замена flat

было [[],[],[]] стало [],[],[]
Ответить с цитированием
  #10 (permalink)  
Старый 04.12.2021, 18:59
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 768

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в написании скриптов для Google таблиц marakoris Работа 1 07.02.2019 19:46
нужно написать пару скриптов для работы с google maps API satyr22 Работа 1 11.08.2018 10:56
Google Api Chart - как настроить вид осей? mdlv Библиотеки/Тулкиты/Фреймворки 0 11.11.2013 16:54
HTA-приложение для радио Pianorama Magneto Ваши сайты и скрипты 42 22.01.2012 08:34