Как записать данные в массив js из json?
Есть файл data.json c таким содержимым. Заполняется файл с помощью некоего php кода
{"тест1":[15455430,12333,1123],"тест2":[14382215,655567,55556777]}
Я накатал js скрипт который забирает данные и выводит их на график. Он действительно выводит на график мои данные.
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
$.getJSON('data.json', function(data) {
val = Object.values(data);
var keys = [];
for(var k in data) keys.push(k);
var series = [];
series.push({
name: keys[0],
data: val[0].map(function(item){return parseInt(item);})
});
series.push({
name: keys[1],
data: val[1].map(function(item){return parseInt(item);})
});
// console.log(series);
Highcharts.chart('container2', {
series: series
});
});
});
</script>
Вопрос. Могу ли я использовать цикл for в js чтобы записать данные в series используя только один series.push? Если да, то как это можно сделать? Сам пробовал, но не силен в js :(
Вводные данные: В series.push ключ name должен содержать текст "тест1" из json, а ключ name содержит в себе данные 15455430,12333,1123
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
let test = {
"тест1": [15455430, 12333, 1123],
"тест2": [14382215, 655567, 55556777]
};
let series = [];
for (const [name, data] of Object.entries(test)) {
series.push({ name, data });
// series.push({
// name: name,
// data: data
// });
}
console.log(series);
Автор решения: Aziz Umarov
→ Ссылка
Вопрос решен притензий нет.
Предложу немного другой вариант с map. И пушить ничего никуда не надо
let test = {
"тест1": [15455430, 12333, 1123],
"тест2": [14382215, 655567, 55556777]
};
let series = Object.entries(test).map(i=>({name:i[0], data:i[1]}));
console.log(series);