Javascript 无法读取属性';xxxx和x27;未定义的

Javascript 无法读取属性';xxxx和x27;未定义的,javascript,chart.js,Javascript,Chart.js,嗨,我是一名学生,我从开发开始。我尝试用chart.js制作一个直方图。x是一周的数字,y是总和。为此,我制定了以下代码 function sumWeek(data) { var week = new Date(data[0].dateHisto).getWeek(); var month = new Date(data[0].dateHisto).getMonth(); var year = new Date(data[0].dateHisto).getFullYear();

嗨,我是一名学生,我从开发开始。我尝试用chart.js制作一个直方图。x是一周的数字,y是总和。为此,我制定了以下代码

function sumWeek(data) {
  var week = new Date(data[0].dateHisto).getWeek();
  var month = new Date(data[0].dateHisto).getMonth();
  var year = new Date(data[0].dateHisto).getFullYear();
  var table = [0, year, month, week];
  var sum = 0;
  for (var i = 0; i < data.length; i++) {
    sum += parseInt(data[i].energy) / 1000;
  }

table.splice(0, 1, sum);
tableWeek.push(table);
}
for (k = 1; k <= 52; k++) {
  var resultW = dataH.filter(function(data) {
    var date = new Date(data.dateHisto);
    return date.getWeek() == k;
  });
  sumWeek(resultW);
}

编辑09/05:我的错,我解释得不好。在某个时刻,一个星期没有数据,返回一个空数组,如
[]
当我有了数据,我就有了
{能源:“19530”,日期历史:“2019-01-28”}

当数据为空时,函数不工作并返回未捕获的typeError。目前,我还没有找到答案的解决方案,在代码的第二行中,您从“数据”数组中取出第一个元素。 如果数组为空或未定义,则没有可以获取属性“dateHisto”的第一个元素

因此,您可以在函数的第一行中添加检查是否收到任何输入

if(!data || data.length < 1){
  return
}
if(!data | | data.length<1){
回来
}
最好的(!)方法是在(!)调用函数之前检查是否有任何输入。

2选项: 第一: 下一行的
data.dateHisto
var date=new date(data.dateHisto);
未定义

第2号: 以下代码的
resultW

var resultW=dataH.filter(函数(数据){
变量日期=新日期(data.dateHisto);
返回日期。getWeek()==k;
});

是一个数组,它包含一个或多个元素,没有
dateHisto
属性,或者包含它,但其值是
未定义的

resultW
控制台中有什么。log
是javascript中的朋友。一个简单的
如果数据[0]
应该让您知道数据[0]中是否确实存在对象。然后您可以继续分析剩余的数据。它说数据[0]未定义。您确定要将参数传递给函数吗?我的错,我没有解释清楚。目前,一周没有数据,返回一个空值,如
[]
。当我有数据时,我有
{energy:“19530”,dateHisto:“2019-01-28”}
。当数据为空时,函数不起作用,返回未捕获的typeError。目前我没有找到解决方案。我的回答不好,我没有解释清楚。有一刻,一周没有数据,返回一个空值,如
[]
。当我有数据时,我有
{energy:“19530”,dateHisto:“2019-01-28”}
。当数据为空时,函数不起作用,并返回未捕获的typeError。目前我还没有找到答案的解决方案OK,因此基本上您可以访问数组中不存在的条目。添加“if”子句以检查数组是否为空:(我的错,我解释得不好。在某个时刻,一周没有数据,返回一个空数组,如
[]
。当我有数据时,我有
{energy:“19530”,dateHisto:“2019-01-28”}
。当数据为空时,函数不起作用,返回未捕获的typeError。目前我还没有找到答案的解决方案。我在回答中用| |替换了&&Y。我输入错误。请重试。
if(!data || data.length < 1){
  return
}