【问题标题】:use recursion in this function在这个函数中使用递归
【发布时间】:2019-04-02 04:39:09
【问题描述】:

我需要用数组数据为 SVG 路径着色。这是功能:

for (var item in colorCollectionArray) {
  var village = colorCollectionArray[item].village;
  var fillColor = 'fill:'+colorCollectionArray[item].colorSet;

  $(SVG).find('path').each(function() {
    var id = $(this).attr('id');
    console.log(id)          
    if (village) {
      if (id.substring(6) === village) {
        $(this).attr('style', fillColor);
      }
    }
  });
}

但是效率不好,加载慢,需要改进。在谷歌搜索了一些建议之后,似乎我应该使用递归。我怎样才能做到这一点?有大神可以给点建议吗?

【问题讨论】:

    标签: javascript jquery recursion svg


    【解决方案1】:

    您不需要查看数组中每个项目的所有<path> 元素。既然你知道你在比较村里的字符串,你可以试试这样和select via id attribute:

    for (var item in colorCollectionArray) {
        var village = colorCollectionArray[item].village,
            fillColor = 'fill:'+colorCollectionArray[item].colorSet,
            path = $(SVG).find('path[id*="' + village + '"]');
    
      if (path.length) {
        path.attr('style', fillColor);
      }
    }
    

    不知道$(SVG) 到底是什么,或者没有看到你的标记,我不知道这是否能开箱即用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多