未捕获的TypeError:无法读取undefined的属性'yield'

时间:2016-10-19 18:07:01

标签: d3.js uncaught-typeerror

我一直收到此错误消息,

“未捕获的TypeError:无法读取未定义的属性'yield'。”

奇怪的是,我从其他人那里复制了代码并且他们没有这个问题,所以任何见解都会很棒......就此而言!

以下是代码;具体错误在底部的第二行,  品种[“YoY”] =品种。值[1] .yield - variety.values [0] .yield;

d3.tsv("barley.tsv", function(error, data) {

  console.log(data);

  data.forEach(function(d) {
    d.site = d.site.replace(" ","").replace(". ", "")
    d.variety = d.variety.replace(" ","").replace(". ", "")
    d["third_level_node"] = d.site + "-" +  d.variety + "-" + d.year;
    d["second_level_node"] = d.site + "-" + d.variety
    d["first_level_node"] = d.site
  })

  var nestedBarley = d3.nest()
      .key(function(d) { return d.site })
      .key(function(d) { return d.variety })
      .entries(data);

  var yoyLookup = {};
  nestedBarley.forEach(function(site) {
        site.values.forEach(function(variety) {
          variety["YoY"] = variety.values[1].yield - variety.values[0].yield;
          yoyLookup[site.key + "-" + variety.key] = variety["YoY"]
        })
      });

1 个答案:

答案 0 :(得分:0)

我们需要确定您的数据是明确的。

如果您希望在nestedBarley.forEach(function(site) {之后快速访问控制台。

,那么您需要更多洞察力
console.log ("variety values", variety.values);

如果这会产生未定义的值,或者我的预感*,偶尔会出现长度为1的数组,那么这就是你的问题。

*我的预感是你的嵌套产生一些只有一个值的条目 - 也许你的一些大麦网站/种类组合只有一年/一个实例的数据 - 所以调用variety.values [1]将会在这些情况下未定义