javascript - 如何使用谷歌折线图两个不同长度的数组

标签 javascript arrays google-visualization

我正在尝试绘制 Google 折线图,其中每条线可能有不同数量的数据点。这是我的数组格式,一种长度为 2 ,另一种长度为 3 。我不知道如何解决这个问题,任何帮助都是值得赞赏的

Array [ Date 2018-05-04T18:30:00.000Z, 45 ]
Array [ Date 2018-05-22T18:30:00.000Z, 234, 234, 234 ]

这是我用来绘制图表的代码,这里我的列和行都是动态的。

for (var k = 0; k < data1.queryA.length; k++) {
  data.addColumn('number', data1.queryA[k].keyword);
}
for (var i = 0; i < data1.query.length; i++) {
  var arr = [];
  alert(data1.query[i].date.length);
  for (var j = 0; j < data1.query[i].date.length; j++) {
    arr.push(parseInt(data1.query[i].date[j].page));
  }
  var test = [new Date(data1.query[i].datee)];
  console.log(test.concat(arr));
  data.addRow(test.concat(arr));
}

最佳答案

每行的长度需要与列数完全匹配。您可以使用 null 值“右填充”行以显示缺失的数据点:

const data = [
  [ new Date("2018-05-04T18:30:00.000Z"), 45 ],
  [ new Date("2018-05-05T18:30:00.000Z"), 45, 12 ],
  [ new Date("2018-05-22T18:30:00.000Z"), 234, 234, 234 ]
];

const padNull = (size, data) =>
  data.map(r =>
    [...r, ...Array(size - r.length).fill(null)]
  );
  
  
console.log(padNull(4, data));
  

如果您不知道需要多少列,则需要找到最大的数据集:

const data = [
  [ new Date("2018-05-04T18:30:00.000Z"), 45 ],
  [ new Date("2018-05-05T18:30:00.000Z"), 45, 12 ],
  [ new Date("2018-05-22T18:30:00.000Z"), 234, 234, 234 ]
];

const columnCount = Math.max(...data.map(r => r.length));
console.log(columnCount);

关于javascript - 如何使用谷歌折线图两个不同长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50481503/

相关文章:

javascript - 谷歌图表显示金钱而​​不是百分比

javascript - knockout 将绑定(bind)应用于 html 绑定(bind)内生成的绑定(bind)

javascript - Angular2 返回的 Div 高度不正确

php - 有没有办法隐藏javascript代码?

javascript - 主干 JS 模板仅打印集合中的最后一项

Java XML 到数组

python - 从需要 .split (',' 的字符串列表中高效创建多维数组)

java - 失败的测试用例,我做错了什么?

javascript - 谷歌图表未正确显示图例

javascript - 谷歌地理图表 map : tooltip without region name