Javascript 尝试只返回一次多个数据

Javascript 尝试只返回一次多个数据,javascript,d3.js,Javascript,D3.js,我目前有一个对象是平移位置&我在这里的变换函数中对它们进行了转换: .attr("transform", function(d,i) {return "translate ("+ arc[i].centroid() +")" + inner[d.Country];}) ; .text(function(d) {return d.Country;}) 我想知道是否可以在文本函数中定义仅收集一次而不是多次国家数据 下

我目前有一个对象是平移位置&我在这里的变换函数中对它们进行了转换:

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


   .text(function(d) {return d.Country;})
我想知道是否可以在文本函数中定义仅收集一次而不是多次国家数据

下面是一个让我的观点更清楚的例子:


任何指向正确方向的指针都可以绘制您在节点上迭代的国家名称,这些节点具有重复的国家名称,因此您将获得多个名称。也许您可以在节点上进行快速转换并对其进行迭代。像这样的东西可能有用

首先创建一个返回唯一元素的函数。这是我发现的一个:

这样做的目的是,首先,将节点数组转换为国家名称数组,然后,仅获取非重复的国家名称。由于数据现在位于
d
中,您必须在现场更改功能以删除
d.Country

希望对你有帮助

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 }))