7

有什么类似Array.map()D3 的选择吗?为了找到一组 SVG<text/>元素的最大长度,我目前执行以下操作。然而.selectAll(...)[0].map(...),对我来说似乎是一个黑客。有没有更好的办法?

      var chi = svg.selectAll('.chi');

      var xChi = d3.max(chi[0].map(function (itm) { return itm.getComputedTextLength(); }));

我可以使用selection.each()在选择上迭代函数,但我不确定如何将它与d3.max(). 我试过了d3.max(chi.each(function (itm) { return itm.getComputedTextLength(); })),但d3.each()没有返回返回值的数组

4

2 回答 2

1
var allLength

d3.selectAll(".element")
.each(function(d, i) {allLength[i]=d3.select(this).node().getComputedTextLength() })

var maxLength = d3.max(a)
于 2012-09-03T20:57:12.630 回答
1

是的..那个支架也让我的眼睛酸痛。

d3.max(svg.selectAll('.chi').pop(), function(item) {
  return itm.getComputedTextLength()
})

问题是从 2012 年开始的。我不知道当时 d3 是什么样的,但当前版本d3.max接受了一个访问器函数来检索你最大化的值。

于 2014-08-09T01:39:15.640 回答