Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3js selection.enter()取决于新添加数据的顺序?_Javascript_D3.js - Fatal编程技术网

Javascript d3js selection.enter()取决于新添加数据的顺序?

Javascript d3js selection.enter()取决于新添加数据的顺序?,javascript,d3.js,Javascript,D3.js,我理解错了吗?还是应该是这样 原圆 d3.select("svg").selectAll('circle') .data([{'name':'john', 'age': '50'}]).enter().append('circle') .attr("cx", function(d){return d.age;}).attr("cy", '200').attr("r", '10').attr("fill", 'red'); 单击按钮,调用下面的函数 function prependValu

我理解错了吗?还是应该是这样

原圆

d3.select("svg").selectAll('circle')
.data([{'name':'john', 'age': '50'}]).enter().append('circle')
.attr("cx", function(d){return d.age;}).attr("cy", '200').attr("r", '10').attr("fill",    'red');
单击按钮,调用下面的函数

function prependValue(){
    d3.select("svg").selectAll('circle')
    .data([{'name':'peter', 'age': '100'}, {'name':'john', 'age': '50'} ])
    .enter().append('circle').attr("cx", function(d){return d.age;}).attr("cy", '200').attr("r", '10').attr("fill", 'green');
}
我想它应该为peter在cx=100处添加一个绿色圆圈,但是,它会将john的圆圈颜色更改为绿色

如果我这样做

.data([{'name':'john', 'age': '50'}, {'name':'peter', 'age': '100'} ])

一切正常。

如果未指定用于匹配数据元素的函数(data()的可选参数),D3将按元素的索引匹配元素。也就是说,它确实假设您将以相同的顺序传递元素


为了防止这种情况,请传入一个函数,告诉它如何匹配元素(例如,按名称)。有关更多信息,请参阅。

我在这里引用了Mike在google group上对这个问题的回答,以防有人想知道加入是如何工作的: " 如果要按名称联接,则需要指定键函数。 否则,默认行为是按索引联接


迈克“

嗨,拉尔斯,非常感谢你的回答。真的很感谢。我很高兴你的问题得到了答案,但你需要付出更多的努力,让你的问题更容易理解,而不需要依赖他人为你编辑。特别是,您的几个问题显示了代码格式问题。在Markdown编辑器上方提供帮助,解释如何正确格式化代码;在问下一个问题之前,你应该熟悉这个过程。