Arrays 如何在D3中将数据加载到多个数组中

Arrays 如何在D3中将数据加载到多个数组中,arrays,d3.js,Arrays,D3.js,我已经基于此创建了一个choropleth地图。它工作得很好,但我现在想添加按钮,在tsv数据中的不同值之间切换:“rate”和“total” 我想我需要两个数据集,以便我可以使用按钮在它们之间切换 rate = [{"id":"Estonia","rate":"6.6","id":"Latvia","rate":"13.7"}] total =[{"id":"Estonia","total":"457000000","id":"Latvia","total":"286000000"}] ..

我已经基于此创建了一个choropleth地图。它工作得很好,但我现在想添加按钮,在tsv数据中的不同值之间切换:“rate”和“total”

我想我需要两个数据集,以便我可以使用按钮在它们之间切换

rate = [{"id":"Estonia","rate":"6.6","id":"Latvia","rate":"13.7"}]
total =[{"id":"Estonia","total":"457000000","id":"Latvia","total":"286000000"}]

....

<button class="opts" value="rate">Rate</button>
<button class="opts" value="total">Total</button>

d3.selectAll('.opts')
  .on('click', function() {
    var data = eval(d3.select(this).property('value'));
    updateLegend(data);
  })

您定义的
比率
总计
变量是对象数组,而不是对象数组。所以你不能写:

total[d.id] = d.total; 
我想你想做的是:

total.push({id: d.id, value: d.total});

一个简单的选择可能是只使用
数据
结构,并在使用
总计

之间切换,谢谢!这修复了我的数组。然而,我似乎失去了我的色彩,你知道我应该在这里引用什么吗。enter().append(“path”).attr(“类”,函数(d){return quantize(d.id)}我以前没有看过完整的代码,因为您没有直接使用d3绑定
rate
total
,实际上最好使用一个对象。您的代码可能是这样的:而且,由于rate和total的值非常不同,我认为您应该更新
quantize.domain()
作为
updateGend
的一部分。
total[d.id] = d.total; 
total.push({id: d.id, value: d.total});