我想在D3中获取附加到选择的所有数据的数组。

我正在使用General Update pattern的示例,并尝试以下操作:

var text = svg.selectAll("text")
  .data(data, function(d) { return d; });

var textEnter = text.enter().append("text")
  .attr("class", "enter")
  .text(function(d) { return d; });

console.log('textEnter data', textEnter[0]);

var textEnterKeys = d3.map(textEnter[0], function(d) {
  return d.__data__;
});

console.log('textEnterKeys', textEnterKeys);

但是textEnterKeys看起来和textEnter完全一样。如何获得附加到所选内容中每个元素的数据数组?

最佳答案

您可以简单地调用.data()而不选择任何参数来获取绑定(bind)数据。参见the documentation:



这对于.enter()选择不起作用,因为还没有可以绑定(bind)数据的元素。在这种情况下,可以使用.map函数:

textEnter.map(function(d) { return d.__data__; });

09-11 20:47