0

我已经根据以下示例启动了一个新的 JavaScript 项目:http: //bl.ocks.org/mbostock/4063570

到目前为止,d3 树状图的一切都很棒,除了我的数据可能总是包含重复的叶子(终端节点)。在我的数据中,只有叶子可能包含重复数据。在 d3 发挥作用之前,所有内部节点(根和叶之间)都是严格区分的。

我可以在节点名称 (d.name) 中添加一些内容以使每个节点完全唯一,但我宁愿“重用”叶节点并尽可能让所有内部节点指向并共享单个叶。

有没有人知道如何做到这一点?

提前谢谢了!德鲁·巴菲尔德

4

1 回答 1

0

D3 数据连接期望每个 DOM 节点对应于数据数组中的不同元素。但是,没有什么可以阻止数据数组中的 2 个元素引用同一个底层对象。

这取决于您是否可以使用默认连接键(即数组索引),或者您是否希望通过将特定数据元素映射到特定节点来实现数据更新的“对象持久性”。为此,您需要定义一个自定义连接键函数,根据定义,该函数依赖于某种方式来区分数据元素。

就个人而言,我认为如果您正在执行任何数量的涉及进入/退出/更新的数据更新,如果每个数据元素都是唯一的并且具有某种您可以使用的“id”或“key”属性,那么生活会容易得多来识别它。重用数据元素可能比它的价值更令人头疼。

您实际上没有提及您通过共享数据尝试实现的目标吗?它只是节省内存的优化还是有其他原因?如果只是回忆,我不会打扰。

于 2013-10-31T05:28:22.833 回答