ChartJS 标签和数据字段仅保存阵列中的2个数据

hsvhsicv  于 2023-10-18  发布在  Chart.js
关注(0)|答案(1)|浏览(144)

前言:我对chart.js非常陌生,所以这可能是缺乏基础知识
我有两个async函数:一个用来构建图表,一个用来准备数据。
这在窗口加载后被调用:

async function chartIt() {
    const ctx = document.getElementById('myChart').getContext('2d');
    const globalVar = await getData();
    const myChart = new Chart(ctx, {
      type: 'bar',
      data: {
        labels: globalVar.xlabels,
        datasets: [
          {
            label: 'Sign Ups',
            data: globalVar.ylabels,
            fill: false,
            borderColor: 'rgba(255, 99, 132, 1)',
            backgroundColor: 'rgba(255, 99, 132, 0.5)',
            borderWidth: 1
          }
        ]
      },
      options: {}
    });
  }

第二个async函数:

async function getData() {
    const response = await fetch('stats.csv');
    const data = await response.text();
    const xlabels = [];
    const ylabels = [];
    const rows = data.split(/\n/);
    rows.forEach(row => {
      const cols = row.split(',');
      rows.push(cols);
      console.log(cols);
      xlabels.push(cols[0])
      ylabels.push(cols[1])
    });

    console.log('xlabels: ' + xlabels);
    console.log('ylabels: ' + ylabels);
    console.log (rows)
    return { xlabels, ylabels };
};

日志返回了一些奇怪的结果,如下所示:screenshot of console logs
Table in HTML
为什么我的标签和数据被作为每个数组中1个值的组合放入?为什么它只停在其中的一个?
任何帮助都是感激不尽的。谢谢你,谢谢
已尝试将数字设置为单个值而不是数组。没有显示任何结果。

gcuhipw9

gcuhipw91#

我不相信这与chartjs有任何关系--getData函数中的代码对我来说非常奇怪。
具体而言,本节:

rows.forEach(row => {
  const cols = row.split(',');
  rows.push(cols);
  console.log(cols);
  xlabels.push(cols[0])
  ylabels.push(cols[1])
});

我不确定您期望数据以什么格式输出,但是您在rows的每个元素上运行的forEach函数中向rows数组添加了更多的条目-这种半迭代、半递归的行为似乎是一个错误,并且导致两个数组各有1个标签和1个值。在不知道如何格式化stats.csv文件的情况下,很难给予比这更有用的建议。
Chart.js本质上需要一个标签数组和一个值数组。您当前正在控制台记录的内容并非如此。

相关问题