Chart.js-将数据和标签合并到单个对象中

Chart.js-将数据和标签合并到单个对象中,chart.js,Chart.js,我正在将chart.js集成到我的应用程序中,在我看来,似乎不可能将对象作为数据传递,而将键作为标签 现在,我正在用一个常规的条形图来尝试这一点,其中的API如下所示: data : [1,2,3] labels: ['a','b','c'] 文档允许传递如下内容: 数据:[{x:'2016-12-25',y:20},{x:'2016-12-26',y:10}] 但仅当使用时间刻度时 我的阵列来自其他地方,可能很容易失去订单,我想传递一些信息,例如: data:[{a:1},{b:2},{c:

我正在将chart.js集成到我的应用程序中,在我看来,似乎不可能将对象作为数据传递,而将键作为标签

现在,我正在用一个常规的条形图来尝试这一点,其中的API如下所示:

data : [1,2,3]
labels: ['a','b','c']
文档允许传递如下内容:

数据:[{x:'2016-12-25',y:20},{x:'2016-12-26',y:10}]

但仅当使用时间刻度时

我的阵列来自其他地方,可能很容易失去订单,我想传递一些信息,例如:


data:[{a:1},{b:2},{c:3}]

如果您的数据类似于
[{a:1},{b:2},{c:3}]
您可以使用

let labelArr=[];let dataArr=[];
data.forEach((item)=>{labelArr.push(Object.keys(item) 
[0]);dataArr.push(item[Object.keys(item)[0]])})

这是一种简便可行的方法,因为chart.js的当前API不支持复杂的数据数组。唯一的替代方法是从chartjs internal扩展chart.controller.bar,然后通过提取将相同的标签数组分配给它。

感谢您的回复,我避免了太多的数据操作。但是扩展组件似乎是一个好的解决方案。但是,我将因此而移动c3.js。你能否更新你的答案,说明这在当前的API中是不可能的,我会将其设置为正确的。无论如何,我更新了答案,我不会推广它,但是如果你正在寻找其他API的选项,你也可以签出highcharts。它提供了比股票代码更多的多样性和更少的复杂性,而这段代码可能会解决这个问题,如何以及为什么解决这个问题将真正有助于提高你的文章质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案,添加解释,并说明适用的限制和假设。
let data =   [1,2,3],
labels=['a','b','c'];

labels.forEach((item,index)=>{
data[index]={[item]:data[index]}
})

  console.log(data); //[{ a: 1 }, { b: 2 }, { c: 3 }]