ChartJS 如何在Javascript中对多个数据集[0,1,2,3,4 ...]进行求和,数据总是为[0][duplicate]

utugiqy6  于 2023-03-12  发布在  Chart.js
关注(0)|答案(1)|浏览(140)

此问题在此处已有答案

Sum array of arrays (matrix) vertically efficiently/elegantly(7个答案)
8天前关闭。
我还是个新手,需要一些帮助。
这里有我的变量chartdata作为起点:

var chartdata = {
  labels: [
    "Bar 1",
    "Bar 2",
    "Bar 3",
    "Bar 4",
  ],
  datasets: [
    {
      label: "Green data",
      type: "bar",
      data: [20, 30, 40, 20]
    },
    {
      label: "Red data",
      type: "bar",
      data: [10, 30, 20, 10]
    },
    {
      label: "Blue data",
      type: "bar",
      data: [20, 20, 20, 20]
    },

因为我有一个堆叠的条形图,我想知道我如何求和“条1”的数据点,即20,10,20 = 50。
我第一次想到数组,它是这样的:

const array0 = chartdata.datasets[0].data;

console.log(array0.reduce((a, b) => a + b, 0));

...但它只能添加20 + 30 + 40 + 20,这是数据集[0]中的所有数据和类似的操作。这意味着我只能获得所有绿色数据点或其他数据点。而不是一个堆叠条形图的总和。
似乎不可能生成类似于chartdata.datasets[0 to 4].data[always 0]的内容;其是y轴上的总瓦尔“条1”值。
我试着用.map设置一些东西,但我自己真的做不到。
也许你们Maven可以给我一个解决方案,我可以直接运行。
先谢了。

eoxn13cs

eoxn13cs1#

使用Array#reduce而不是chartdata.datasets本身。

let chartdata={labels:["Bar 1","Bar 2","Bar 3","Bar 4",],datasets:[{label:"Green data",type:"bar",data:[20,30,40,20]},{label:"Red data",type:"bar",data:[10,30,20,10]},{label:"Blue data",type:"bar",data:[20,20,20,20]},]};
let res = chartdata.datasets.reduce((acc, curr) => acc + curr.data[0], 0);
console.log(res);

相关问题