Как преобразовать этот массив для добавления в новую переменную данных диаграммы google:
var array_column =["Year","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var array_rows = ["2014", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.67, 0, "2015", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.33, 0, "2016", 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 2.67, "2017", 2, 0, 0, 4.33, 2.67, 0, 2.5, 0, 0, 0, 0, 0, "2018", 0, 0, 2.17, 0, 0, 0, 0, 0, 0, 0, 0, 0]
В основном array_rows динамически добавляется 13. На array_column фиксируется длина 13. Есть ли способ, как добавить array_rows выше на 13 и сделать это так?
var newData = [
['Year', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
["2014", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.67, 0],
["2015", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.33, 0],
["2016", 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 2.67],
["2017", 2, 0, 0, 4.33, 2.67, 0, 2.5, 0, 0, 0, 0, 0],
["2018", 0, 0, 2.17, 0, 0, 0, 0, 0, 0, 0, 0, 0]
];
// in this case the first column is of type 'string'.
dataTable.addColumn('string', newData[0][0]);
// all other columns are of type 'number'.
for (var i = 1; i < numCols; i++)
dataTable.addColumn('number', newData[0][i]);
// now add the rows.
for (var i = 1; i < numRows; i++)
dataTable.addRow(newData[i]);
// redraw the chart.
chart.draw(dataTable, options);
/ / -------------------- обновляется --------------------------- ----
var array_column = ["Year","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var array_rows = ["2014", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.67, 0, "2015", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.33, 0, "2016", 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 2.67, "2017", 2, 0, 0, 4.33, 2.67, 0, 2.5, 0, 0, 0, 0, 0, "2018", 0, 0, 2.17, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var splice=13;
var arr = array_rows;
var newarr = new Array();
console.log("newarr_column: "+array_column);
for (var i=0; i<arr.length; i=i+splice) {
newarr.push(arr.slice(i,i+splice));
console.log("slice: "+arr.slice(i,i+splice))
}
//Is this correct?
var newData = [array_column,newarr];
и это дает мне эту ошибку в диаграмме google:
Когда я использовал эту переменную, она сработала.
var newData = [
['Year', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
["2014", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.67, 0],
["2015", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.33, 0],
["2016", 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 2.67],
["2017", 2, 0, 0, 4.33, 2.67, 0, 2.5, 0, 0, 0, 0, 0],
["2018", 0, 0, 2.17, 0, 0, 0, 0, 0, 0, 0, 0, 0]
];
Я изменил ваш код, чтобы он соответствовал тому, что вы уже написали, но его можно немного очистить.
Проблема с вашим первоначальным решением заключается в том, что это утверждение,
var newData = [array_column,newarr];
создает массив с массивом столбцов в качестве первого элемента и второй массив, содержащий массивы с строками. Для того, чтобы диаграмма работала, вам нужно иметь один массив с столбцами в качестве первого элемента, а первая строка - как второй элемент, вторая строка - как третий элемент и так далее...
Вот почему я модифицировал ваш код, чтобы нажать массив array_column в массив результатов до того, как строки будут разбиты (спасибо @WhiteHat)
newarr.push(array_column);
Вот модифицированный код:
var array_column = ["Year","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var array_rows = ["2014", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.67, 0, "2015", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.33, 0, "2016", 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 2.67, "2017", 2, 0, 0, 4.33, 2.67, 0, 2.5, 0, 0, 0, 0, 0, "2018", 0, 0, 2.17, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var splice=13;
var arr = array_rows;
var newarr = new Array();
console.log("newarr_column: "+array_column);
newarr.push(array_column);
for (var i=0; i<arr.length; i=i+splice) {
newarr.push(arr.slice(i,i+splice));
console.log("slice: "+arr.slice(i,i+splice))
}
newData = newarr;
array_column
в newarr
прежде чем разрезать строки, тогда все готово ...