确保d3数据元素匹配id?

Mau*_*aus 17 d3.js

我有一个带有一堆多边形的现有svg.每个多边形都有一个唯一的id,每个id都有一些关联的数据.

我的问题是:如果我做自然d3加入:

d3.selectAll("polygon").data(array_of_data)
Run Code Online (Sandbox Code Playgroud)

反正是否确保与多边形关联的数据元素是正确的?

或者我只需要保持array_of_data与所选多边形的顺序相同的顺序?

Ray*_*din 27

D3的data()函数采用可选的第二个参数,旨在提供数据和DOM节点之间的这种对应关系.试试这个:

d3.selectAll('polygon').data(array_of_data, function(d) { return d.id; });
Run Code Online (Sandbox Code Playgroud)

第二个参数data()是一个回调函数,当用数据调用时,返回将每个DOM节点绑定到它的相应数据的键.当您不提供这样的功能时,D3没有选项,只能使用索引将数据绑定到DOM节点.

  • 所以如果我的多边形已经有一个名字,那么就无法告诉d3具有相同名称的基准是否与该多边形相匹配? (4认同)