微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ChartJS 在一个图中组合了两个具有一些相似性的数组

如何解决ChartJS 在一个图中组合了两个具有一些相似性的数组

我需要将两个数组组合成一个条形图,而无需手动操作数组。 数组示例:

result1 = {a:2,b:5,c:52}
result2 = {a:4,b:3,d:47}
//WHERE (to elaborate):
result1.labels = {a,b,c};
result1.data = {2,5,52};
result2.labels = {a,d};
result2.data = {4,3,47};


      var myChart = new Chart(ctx,{
    type: 'bar',data: {
          datasets: [{
              label: 'Dataset 1',data: result1.data,order: 1,labels: result1.labels
          },{
              label: 'Dataset 2',data: result2.data,order: 2,labels: result2.labels
          }]
      },options: {
          scales: {
              y: {
                  beginAtZero: true
              }
          }
      }
  });

现在我只会得到 3 堆条形,它将合并 result1 和 result2 的 3. 条目,但我需要它来制作 4 个条形“a、b、c、d”。 我知道我可以手动填充 result1 并添加“d:0”并在 result2 中添加“c:0”,但由于它从不断改变返回数组大小的数据库获取数据,这不是一个好的解决方案。

谢谢

解决方法

您可以创建所有键的 set,然后遍历对象并检查键是否已存在。如果没有添加它。

const result1 = {a:2,b:5,c:52};
const result2 = {a:4,b:3,d:47};

const getUniqueKeys = (...objs) => {
  // Create a set of all unique keys
  const keys = objs.reduce((keys,obj) => {
    for(key in obj) {
      keys.add(key)
    }
    
    return keys;
  },new Set());
  
  // Convert set to array
  return [...keys];
}

const addMissingValues = (keys,obj,fill = 0) => {
  // Create copy to prevent changing the original object
  const copy = {...obj};
  
  for(const key of keys) {
    // Add key if it doesn't exist
    if(!copy.hasOwnProperty(key)) {
      copy[key] = fill;
    }
  }
  
  // Return copy
  return copy;
}

const keys = getUniqueKeys(result1,result2);
const correct1 = addMissingValues(keys,result1);
const correct2 = addMissingValues(keys,result2);

console.log(correct1);
console.log(correct2);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?