Как передать данные json в серию highcharts?

у меня есть следующий массив json, который генерируется во время выполнения. Следовательно, количество пар имя/данные меняется.

`var sales = { "SalesData" : [ 
{ "name"  : "AllProducts|Canada", "data" :[44936.0,50752.0] },
{ "name"  : "AllProducts|Mexico", "data" : [200679.0,226838.0] },
{ "name"  : "AllProducts|USA",    "data" : [288993.0,289126.0] }
                    ]}    `

Я хочу передать эти данные в highcharts серии.

вот как я это делаю в настоящее время.

series: [     
        {name:sales.SalesData[0].name,data:sales.SalesData[0].data},
        {name:sales.SalesData[1].name,data:sales.SalesData[1].data},
        {name:sales.SalesData[2].name,data:sales.SalesData[2].data}

            ]

но если количество элементов в массиве изменяется, то это не сработает. Как решить эту проблему ? Демо-код мне поможет.

я судил следующие вопросы, но я не смог решить проблема.

динамическое добавление в Highcharts

массив данных серии Highcharts

2 ответов


вместо строительства series массив вручную вы можете выполнить цикл через sales переменные данные и построить массив. Так какое же количество элементов в sales.SalesData массив, все элементы будут в series массив

var series = [],
    salesData= sales.SalesData;

for (var i=0 i< salesData.length; i++) {
    series.push({"name" : key, "data" : sales[key]})
}

это построено series array является частью объекта, который вы должны передать в качестве аргумента highcharts метод.

var chartdata = {
    chart: {type: 'column'},
    title: {text: 'Sales Data'},
    xAxis: {
        categories: ['Category 1','Category 2']
    },
    yAxis: {
        min: 0,
        title: {text: 'Sales'}
    },
    series : []
}

chartdata.series = series;

$('#chart').highcharts(chartdata);

где #chart-это контейнер, в котором вы хотите отобразить диаграмму.

вы также можете обратитесь к скрипкам, которые доступны в их демо-страницы для каждого типа диаграммы, чтобы узнать больше о том, как отображать определенный тип диаграммы.


Я решил проблему

изменен массив json следующим образом:

var sales = [ 
              { "name"  : "AllProducts123|Canada", "data" :[44936.0,50752.0] },
              { "name"  : "AllProducts|Mexico", "data" : [200679.0,226838.0] },
              { "name"  : "AllProducts|USA",    "data" : [288993.0,289126.0] }
            ]

теперь передайте его непосредственно серии в highcharts.

 series:sales

готово !!!!!