我一直收到此错误消息,
“未捕获的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"]
})
});
答案 0 :(得分:0)
我们需要确定您的数据是明确的。
如果您希望在nestedBarley.forEach(function(site) {
之后快速访问控制台。
console.log ("variety values", variety.values);
如果这会产生未定义的值,或者我的预感*,偶尔会出现长度为1的数组,那么这就是你的问题。
*我的预感是你的嵌套产生一些只有一个值的条目 - 也许你的一些大麦网站/种类组合只有一年/一个实例的数据 - 所以调用variety.values [1]将会在这些情况下未定义