Arrays D3函数仅迭代数组中数据的最后一点。

Arrays D3函数仅迭代数组中数据的最后一点。,arrays,d3.js,iteration,Arrays,D3.js,Iteration,对于以下代码行,在数据中输入locationArray后,迭代将按数组的长度运行,但从最后一次迭代开始,因此I始终为=1(数组的长度为两个嵌套数组)。为什么不从数组[0]开始 var canvas = d3.select("#map-canvas"); setTimeout(function(){ console.log(canvas) canvas .selectAll(".marker") .append('svg') .attr('width', 400)

对于以下代码行,在数据中输入locationArray后,迭代将按数组的长度运行,但从最后一次迭代开始,因此I始终为=1(数组的长度为两个嵌套数组)。为什么不从数组[0]开始

var canvas = d3.select("#map-canvas");
setTimeout(function(){
  console.log(canvas)

  canvas
    .selectAll(".marker")
    .append('svg')
    .attr('width', 400)
    .attr('height', 400)
    .style("position", "relative")
    .style("right", 150)
    .style("bottom", function() {
      return 150;
    })
var marker = canvas.selectAll(".marker")
  console.log(marker)
  marker
  .selectAll('svg')
    .data(locationsArray)
    .enter()
    .append('circle')
    .attr("fill", "magenta")
    .attr("r", 15)
    .attr("cx", 165)
    .attr("cy", 165)
    .attr("class", function(d, i) {
      console.log(d + i)
    if (d[3] >= 30 && d[3] < 60) {
      d[2] == 1 ? result = "smallBadVibe" :
      d[2] == 2 ? result = "smallNeutralVibe" : result = "smallGoodVibe";
      console.log(result)
      return result;
    }    
var canvas=d3.选择(“映射画布”);
setTimeout(函数(){
console.log(画布)
帆布
.selectAll(“.marker”)
.append('svg')
.attr('width',400)
.attr('height',400)
.风格(“位置”、“相对”)
.style(“右”,150)
.style(“底部”,函数(){
返回150;
})
var marker=canvas.selectAll(“.marker”)
console.log(标记器)
标记
.selectAll('svg')
.数据(位置阵列)
.输入()
.append('圆')
.attr(“填充”、“洋红色”)
.attr(“r”,15)
.attr(“cx”,165)
.attr(“cy”,165)
.attr(“类”,函数(d,i){
控制台日志(d+i)
如果(d[3]>=30&&d[3]<60){
d[2]==1?result=“smallBadVibe”:
d[2]==2?result=“smallNeutralVibe”:result=“smallGoodVibe”;
console.log(结果)
返回结果;
}    

请参阅和的第5节。是的,解决了这个问题。谢谢Lars。我只是在选择“svg”后添加了一个.selectAll('div')。不过,我还有另一个问题,我真的想为每个数据点运行上面的整个代码,而不是为“.marker”的每个实例运行整个数据,是否有一种方法可以调用数据或启动数据的迭代序列,以便每次数据迭代都将数组的索引绑定到标记的实例?我不明白你在说什么--你说的“数据迭代”是什么意思?顺便说一句,我确实读了你的文章,它帮助我澄清了一些事情,尽管它确实给我留下了一个索引的替代方案,我现在还不能完全理解。我想我的意思是,每次数组中的数据点通过数据输入后的代码求值时。请参阅和的第5节。是的,解决了。谢谢Lars。我simp在选择“svg”之后,我添加了一个.selectAll('div')。但是,我有另一个问题,我真的想为每个数据点运行上面的整个代码,而不是为“.marker”的每个实例运行整个数据,是否有一种方法可以调用数据或启动数据的迭代序列,以便每次数据迭代都将数组的索引绑定到标记的实例?我不明白你在说什么--你说的“数据迭代”是什么意思?顺便说一句,我确实读了你的文章,它帮助我澄清了一些事情,尽管它确实给我留下了一个索引的替代方案,我现在还不能完全理解。我想我的意思是,每次数组中的数据点通过数据输入后的代码求值时。