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

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

此问题在此处已有答案

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

  1. var chartdata = {
  2. labels: [
  3. "Bar 1",
  4. "Bar 2",
  5. "Bar 3",
  6. "Bar 4",
  7. ],
  8. datasets: [
  9. {
  10. label: "Green data",
  11. type: "bar",
  12. data: [20, 30, 40, 20]
  13. },
  14. {
  15. label: "Red data",
  16. type: "bar",
  17. data: [10, 30, 20, 10]
  18. },
  19. {
  20. label: "Blue data",
  21. type: "bar",
  22. data: [20, 20, 20, 20]
  23. },

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

  1. const array0 = chartdata.datasets[0].data;
  2. 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本身。

  1. 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]},]};
  2. let res = chartdata.datasets.reduce((acc, curr) => acc + curr.data[0], 0);
  3. console.log(res);

相关问题