我正在使用D3 v4。我为此搜索了很多但没有发现任何东西。我在Mister Nester重现了这个问题,但是有人指出N先生正在使用D3 v3。尽管如此,如果与D3 v4一起使用,他们使用的数据集和代码示例仍会产生“我的”错误。
以下是要粘贴的代码:
d3.nest()
.key(function(d) { return d.year; })
.map(data).each(function(values, key) { return 0;});
浏览器控制台捕获有关
的错误“不是函数”:未捕获的TypeError: d3.nest(...)。key(...)。map(...)。每个都不是函数
如果您搜索unminified v4 code,就会发现map.each
使用的示例与我使用的完全一样:
map.each(function(v, k) { array.push({key: k, values: entries(v, depth)});
然后定义map.each
的代码说同样的事情:
each: function(f) {
for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
}
这是我的第一个stackoverflow问题。我试图彻底。如果我应该采取不同的做法,请告诉我。
答案 0 :(得分:1)
您链接到的Mister Nester
工具正在运行d3 版本3 。从版本3文档:
nest.map(array [,mapType])
将nest运算符应用于指定的数组,返回一个 关联数组。
这是一个普通的旧javascript对象,它没有.each
方法。
最接近你想要的版本3是:
d3.nest()
.key(function(d) { return d.year; })
.map(data, d3.map)
.forEach(function(values, key) { return 0;});