【问题标题】:Array.map() and D3 selection?Array.map() 和 D3 选择?
【发布时间】:2012-08-30 07:26:56
【问题描述】:

对于 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() 没有返回返回值的数组

【问题讨论】:

    标签: javascript svg selector d3.js


    【解决方案1】:
    var allLength
    
    d3.selectAll(".element")
    .each(function(d, i) {allLength[i]=d3.select(this).node().getComputedTextLength() })
    
    var maxLength = d3.max(a)
    

    【讨论】:

    • 谢谢,这有效,但d3.max(svg.selectAll('.chi')[0].map(function (itm) { return itm.getComputedTextLength(); })); 也有效
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      相关资源
      最近更新 更多