Javascript 在chartjs栏中合并具有不同键的两个对象

Javascript 在chartjs栏中合并具有不同键的两个对象,javascript,chart.js,Javascript,Chart.js,我有两个JSON: first: { "a": 1, "b": 9, "c": 12, "d": 5 } 及 我想创建包含两个json(带有两个数据集)的chartjs栏。 标签应该是‘a’、‘b’、‘c’、‘d’、‘e’、‘f’,并且“第一个”数据集的数据将是:1、9、12、5、0、0。“第二个”数据集的数据将是:7、11、0、0、8、7 我现在的代码: var barChartData = { labels: Object.keys(first), datasets:[

我有两个JSON:

first: {
"a": 1,
"b": 9,
"c": 12,
"d": 5
}  

我想创建包含两个json(带有两个数据集)的chartjs栏。 标签应该是‘a’、‘b’、‘c’、‘d’、‘e’、‘f’,并且“第一个”数据集的数据将是:1、9、12、5、0、0。“第二个”数据集的数据将是:7、11、0、0、8、7

我现在的代码:

var barChartData = {
    labels: Object.keys(first),
    datasets:[
        {
            label:'first',
            data: Object.values(first)
        },
        {
        label: 'second',
        data: Object.values(second)
        }]
};

window.myBar = new Chart(document.getElementById("barChart").getContext("2d"),
{
    type:'bar',
    data: barChartData
});
问题是,我希望标签来自“first”和“second”JSON的键,而不仅仅来自“first”,而且这些值将适合键


有什么简单的方法可以做到这一点吗?

看起来您希望两个对象具有相同的键,但在未定义键时,值为零。有几种方法可以做到这一点。一个选项是列出两个对象的组合键,如果键不存在,只需在它们上面循环,将对象的值设置为0:

let first={“a”:1,“b”:9,“c”:12,“d”:5}
让第二个={a:7,e:8,b:11,f:7}
Object.keys(Object.assign({},first,second))//获取组合键
.forEach(k=>{
如果(!first.hasOwnProperty(k))first[k]=0;//如果键不在对象中,则设置0
如果(!second.hasOwnProperty(k))second[k]=0;
})

console.log(第一,第二)
请同时添加结果-以及您尝试过的内容。值得一看:
var barChartData = {
    labels: Object.keys(first),
    datasets:[
        {
            label:'first',
            data: Object.values(first)
        },
        {
        label: 'second',
        data: Object.values(second)
        }]
};

window.myBar = new Chart(document.getElementById("barChart").getContext("2d"),
{
    type:'bar',
    data: barChartData
});