D3.js:获取附加到选择的数据数组?

Ric*_*ard 21 javascript d3.js

我想得到一个附加到D3中选择的所有数据的数组.

我正在使用General Update模式中的示例,并尝试这样做:

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);
Run Code Online (Sandbox Code Playgroud)

textEnterKeys看起来完全一样textEnter.如何获取附加到选择中每个元素的数据数组?

Lar*_*off 37

您可以简单地.data()在选择上调用而无需任何参数来获取绑定数据.查看文档:

如果未指定值,则此方法返回选择中第一个组的数据数组.返回数组的长度将与第一个组的长度匹配,并且返回数组中每个数据的索引将与选择中的相应索引匹配.如果选择中的某些元素为null,或者它们没有关联数据,则数组中的相应元素将是未定义的.

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

textEnter.map(function(d) { return d.__data__; });
Run Code Online (Sandbox Code Playgroud)