动态访问JSON属性的方法

时间:2017-02-24 03:37:20

标签: json d3.js topojson

我正在尝试动态访问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属性。

0 个答案:

没有答案