试图只返回一次多个数据

时间:2012-11-16 00:31:10

标签: javascript d3.js

我目前有一个翻译位置和对象的对象。我在他的变换函数中:

   .attr("transform", function(d,i)
                {return "translate ("+ arc[i].centroid() +")" +  inner[d.Country];})
                ;


   .text(function(d) {return d.Country;})

我想知道是否可以在文本功能中定义仅收集国家数据一次&不是多次?

这是一个让我的观点更清晰的方法:http://jsfiddle.net/xwZjN/41/

任何正确方向的指针都将受到赞赏

1 个答案:

答案 0 :(得分:0)

要绘制国家/地区名称,您将遍历具有重复国家/地区名称的节点,因此您将获得多个名称。也许你可以对节点进行快速转换并迭代它。这样的事情可行。

首先创建一个返回唯一元素的函数。这是我在SO中找到的:

function unique(a) {
  var s = a.sort();
  var r = [];
  for (var i = 0; i < a.length - 1; i++) {
    if (s[i + 1] != s[i]) {
      r.push(s[i]);
    }
  }
  return r;
}

然后使用以下内容作为数据元素。

unique(nodes.map(function(d) { return d.Country }))

这样做,首先,将nodes数组转换为国家/地区名称数组,其次,只获取非重复的国家/地区名称。由于数据现在位于d.Country,您必须在场时更改功能才能删除d

希望它有所帮助...