d3.map()值如何重置为默认值?

时间:2014-09-11 17:50:49

标签: d3.js

我在更新模式中使用d3.map()来映射一些值。

我的代码如下所示:

selectedNeighborhood.map(function(d) { rateById.set(d.endneighborhood, d.rides); }) ;

我的问题是,当我进行新选择和新更新时,不会使用一组新值替换现有地图,而是展开地图。每次运行更新功能时,我希望我的地图重置为默认值。我该怎么做?

一种工作方法(不干净)是将地图对象设置为等于{},然后将地图重新​​定义为变量名称。

1 个答案:

答案 0 :(得分:1)

rateById重新设置为新的空白地图并非完全不干净,但如果某些对象/功能保留对rateById的值的引用,则可能会导致错误一个单独的变量,在这种情况下,现有的引用不会更新为指向新创建的地图。

您想要“就地”清除地图(即改变它,以便var rateById继续指向相同的d3.map)。您可以通过循环其条目并逐个删除它们来实现:

rateById.forEach(function(key) { rateById.remove(key); });

作为旁注:这不是什么大问题,但仍然使用数组map()进行循环,因为在selectedNeighborhood.map(...)中最终实例化并返回一个新的undefined数组。如果selectedNeighborhood是一个巨大的阵列,这将是浪费(在内存和CPU方面)。使用selectedNeighborhood.forEach(...)可以实现相同的结果但不创建新数组,因此更合适。