如何在JSON中使用Highmaps数据未标记为“值”

时间:2019-05-01 22:00:11

标签: javascript highcharts

我有一个包含许多字段的数据集。我无法控制此JSON的创建。样本:

<div class="aboutbox">ABOUT</div>

图表代码为:

data = [
    {
    'maparea':'3704000063',
    'relatedsource':null,
    'empcount':'198390',
    'response':'78',
    'mean':'61663.00',
    },
...
]

geoJSON使用Highcharts.mapChart('container', { chart: { map: geojson }, title: { text: 'GeoJSON in Highmaps' }, mapNavigation: { enabled: true, buttonOptions: { verticalAlign: 'bottom' } }, colorAxis: { tickPixelInterval: 100 }, series: [{ data: data, keys: ['maparea', 'relatedsource', 'empcount', 'response', 'mean'], joinBy: ['fips', 'maparea'], name: 'Random data', states: { hover: { color: '#a4edba' } }, dataLabels: { enabled: true, format: '{point.properties.postal}' } }] }); 标记区域(在本例中为NC县)。该地图显示了州和县的元素。但是,没有数据用于绘图。这是因为HighMaps代码期望在我认为的数据中出现fips元素。

有没有一种方法可以告诉HighMaps数据集中的哪些元素用于遮挡弧度?

1 个答案:

答案 0 :(得分:1)

我看不到任何将您的唯一数据形状映射到expected keys in the data according to the docs的选项。根据您的评论,使用数组可以做到这一点,但是使用对象似乎不可能做到这一点。

但是,将对象重新映射到所需的形状非常简单。下面的代码提供了部分示例。

let dataMapped = data.map(obj => { 
   var median = Number(obj.median);       
   return Object.assign(obj, { name: obj.maparea, value: median });
});

然后使用dataMapped作为数据值。

在ES6中可能存在一种更优雅的方法来实现对象散布,并避免使用Object.assign来合并旧对象和新属性,但是我没有时间研究片刻。