简体   繁体   English

Javascript chart.js 数据对象/数组

[英]Javascript chart.js data object/array

i want to load in a data array for my chart like this:我想为我的图表加载一个数据数组,如下所示:

data: chardata

I create a variable like this:我创建一个这样的变量:

var chartdata = [];

i fill it with data from a function which should return an array but it returns an object我用来自 function 的数据填充它,它应该返回一个数组,但它返回一个 object

function getChartData(type) {
var chartdata = [];
console.log(typeof chartdata);
getDates(14).forEach(element => {
    var lastdate = new Date(element);
    lastdate.setHours(23);
    lastdate.setMinutes(59);
    lastdate.setSeconds(59);
    modlogRef.where("userName", "==", modname).where("action", "==", type).where("timestamp", ">=", element).where("timestamp", "<=", lastdate)
        .get()
        .then(function(querySnapshot) {
            chartdata.push(querySnapshot.size);
        })
        .catch(function(error) {
            console.log("Error getting documents: ", error);
        }); 
});
console.log(typeof chartdata);
return chartdata;

and when i look what type it is it says object put it shoud be a array?当我看它是什么类型时,它说 object 应该是一个数组? so when i return it to the chart and set data to chardata it fails because it is a object not an array?所以当我将它返回到图表并将数据设置为 chardata 时它会失败,因为它是 object 而不是数组? I even tried converting it to an array like this:我什至尝试将其转换为这样的数组:

Object.values(chardata)

but that is just an empty array even if the object had values?但这只是一个空数组,即使 object 有值? What am i doing wrong?我究竟做错了什么? The error that i get is:我得到的错误是:

chart.js@2.8.0:7 Uncaught TypeError: Cannot read property 'skip' of undefined
    at ce (chart.js@2.8.0:7)
    at fe (chart.js@2.8.0:7)
    at me (chart.js@2.8.0:7)
    at ni.getElementsAtEventForMode (chart.js@2.8.0:7)
    at ni.handleEvent (chart.js@2.8.0:7)
    at ni.eventHandler (chart.js@2.8.0:7)
    at i (chart.js@2.8.0:7)
    at HTMLCanvasElement.Fe.<computed> (chart.js@2.8.0:7)

First in javascript an array is an object, to know if something is an array you should use Array.isArray(varName).首先在 javascript 中,一个数组是一个 object,要知道某个东西是否是一个数组,你应该使用 Array.isArray(varName)。

It looks like you get an empty array back because your query to get data returns nothing, I quickly pushed in a for loop some values to the array and it returns it fine so it must be your dataset which does not contain anything.看起来您返回了一个空数组,因为您获取数据的查询没有返回任何内容,我很快将一些值推入了一个 for 循环中,并且它很好地返回了它,因此它必须是您的数据集,其中不包含任何内容。 Or your filters make it return nothing或者你的过滤器让它什么都不返回

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM