#javascript #json #highcharts
Есть такой массив объектов:
[
{
"year" : "1959",
"data" : {
"Яблоки" : 2794966,
"Грушы" : 3974229,
"Арбузы" : 762131,
...
}
},
{
"year" : "1970",
"data" : {
"Яблоки" : 4238395,
"Грушы" : 5521917,
"Арбузы" : 933461,
...
}
},
...
]
Как преобразовать его в такой вид:
{
labels: ['1959', '1970', ...],
datasets: [
{
label: 'Яблоки',
data: [2794966, 4238395, ...]
},
{
label: 'Грушы',
data: [3974229, 5521917, ...]
},
{
label: 'Арбузы',
data: [762131, 933461, ...]
},
...
]
}
Ответы
Ответ 1
Собираете года в один массив, фрукты в другой, типа: var years = []; var fruits = {}; Заполняете данными, примерно так: for(var i=0; i < data.length; i++) { years.push(data[i]['year']); for(var fruit in data[i]['data']) { if(fruits[fruit] == undefined) { fruits[fruit] = []; } fruits[fruit].push(data[i]['data'][fruit]); } } И потом стоите массив так, как вам нужно: var data = {}; data['labels'] = years; data['datasets'] = []; for(var fruit in fruits) { data['datasets'].push({ 'label': fruit, 'data': fruits[fruit] }); }Ответ 2
Просто берёте и меняете структуру. Например, так: const initial = [ { "year" : "1959", "data" : { "Яблоки" : 2794966, "Грушы" : 3974229, "Арбузы" : 762131 } }, { "year" : "1970", "data" : { "Яблоки" : 4238395, "Грушы" : 5521917, "Арбузы" : 933461 } } ]; const data = { labels: initial.map(item => item.year), datasets: [] }; for (let l in initial[0].data) { data.datasets.push({ label: l, data: initial.map(item => item.data[l]) }); } console.log(data);
Комментариев нет:
Отправить комментарий