d3 selectAll().data()只返回第一个元素中的数据.为什么

shy*_*am_ 0 d3.js

我试图使用d3获取所有匹配元素中的数据.我有以下代码

d3.selectAll('svg').selectAll('.line').data()
Run Code Online (Sandbox Code Playgroud)

我期望它应该返回所有匹配元素中的数据.但它只是在第一个匹配元素中返回数据.

如果我这样做的话

d3.selectAll('svg').selectAll('.line')
Run Code Online (Sandbox Code Playgroud)

这表明它有2个group元素,其data属性包含数据.

如果我这样做var line = d3.selectAll('svg').selectAll('.line'); line[0].data()会给我错误.因为line [0]成为没有任何属性的DOM元素

如何在所有匹配的选择中获取数据或我不清楚如何使用它.

alt*_*lus 5

这是selection.data(values)读取规范的预期行为:

如果未指定值,则此方法返回选择中第一个组的数据数组.

这就解释了为什么你只得到绑定到第一组的数据.

要访问绑定到您的选择返回的所有组的数据,您可以使用:

d3.selectAll('svg').selectAll('.line').each(function(d) {
    // Within this function d is this group's data.
    // Iterate, accumulate, do whatever you like at this point.
});
Run Code Online (Sandbox Code Playgroud)