d3.nest()。key()。map()。每个都不是函数

时间:2018-01-19 15:45:08

标签: d3.js

我正在使用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问题。我试图彻底。如果我应该采取不同的做法,请告诉我。

1 个答案:

答案 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;});