Array.map()和D3选择?

时间:2012-08-30 07:26:56

标签: javascript svg selector d3.js

D3选择有Array.map()之类的东西吗?要查找选定的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()没有返回返回值的数组

2 个答案:

答案 0 :(得分:0)

var allLength

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

var maxLength = d3.max(a)

答案 1 :(得分:0)

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

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

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