在d3数据函数中连接对象值的目的是什么?

时间:2017-10-02 18:19:53

标签: d3.js

我正在尝试理解这个example的第84行的目的:

.data(data, (d) => d.day+':'+d.hour);

似乎为每个数组元素返回一个字符串,这样{day:1, hour: 2, value: 16}将返回"1:2"。但是,我无法看到这样做的目的是什么提供给示例的其余部分。它似乎是死代码。

请标记是否应将其移至代码审核或其他堆栈交换。

1 个答案:

答案 0 :(得分:3)

要覆盖D3通过索引绑定数据的默认机制,可以将键函数作为第二个参数传递给selection.data([data[, key]])。来自文档:

  

可以指定一个关键函数来控制将哪个数据分配给哪个元素,通过计算每个数据和元素的字符串标识符来替换默认的索引连接。

为了正常工作,键功能需要为每个单独的数据返回唯一键。由于在示例的数据中,属性dayhour本身并不是唯一的,因此您需要以某种方式创建明确标识数据对象的键值,从而进行连接。