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()
没有返回返回值的数组
答案 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
接受了一个访问函数来检索你最大的值。