我正在尝试动态访问JSON属性,以便更新我的美国地图上的颜色。这是序数据,设置非常简单:
var colorMap = {
'Outcome 1' : 'blue',
'Outcome 2' : 'lightblue',
'Outcome 3' : 'steelblue',
'None': 'gray'
}
var dataMap = {
'August' : d.properties.August,
'September' : d.properties.September,
'October' : d.properties.October
}
function update_colors(month) {
svg.selectAll('path')
.attr('fill', function(d) {
var data_entry = dataMap[month];
if (data_entry) {
return colorMap[data_entry];
} else {
return 'gray';
}
});
}
在开始时,我通过省略字典并仅使用一个JSON属性的数据来简化操作:
var data_entry = d.properties.August;
在这种情况下它运行良好,但它不是我所追求的,它是静态的。这就是为什么我想通过创建具有不同属性的字典来进行下一步。它不起作用,我得到错误d没有为dataMap中的第一项定义。我知道它不会在真正意义上被定义,但我认为只有在被调用时才需要定义它,而不是最初的定义。
我的问题是:我需要更改什么才能使update_color函数按预期工作?如果你觉得它过于虚弱,请随意废弃我的方法以支持别的东西。
注意:为了清楚起见,update_color函数应该执行的是获取传递给它的字符串月值,并使用它来访问相应的JSON属性。