Почему получаю ошибку "TypeError: dataCharts.push is not a function"?
Мне нужно сформировать из Массива содержащего js-объекты - новый js-объект c объектами, но в итоге получается сформировать
только массив с объектами: Получилось сформировать так: Array [ Object, Object ] А нужно чтобы получился объект: Object { cols: Array[4], rows: Array[1] } Моя реализация:
var arr = [
{Rank:1,Country:"Moscow",US$:"101994"},
{Rank:2,Country:"Luxembourg",US$:"101"},
{Rank:3,Country:"Monaco",US$:"1019"}
]
var dataCharts = [];
dataCharts.push({ cols: [{id: "year",label: "Год",type: "string"}]});
arr.forEach(function (element, index) {
dataCharts[0].cols.push( {id: element.Rank,label: element.Country,type: "string"} );
});
dataCharts.push( { rows:[ { c: [ {v: "2015"} ] } ] } );
arr.forEach(function (element, index) {
dataCharts[1].rows[0].c.push( {v: "101994", f: "101994"} );
});
console.log(dataCharts);
1) Если изменяю строку "var dataCharts = [];" на "var dataCharts = {};", получаю ошибку "TypeError: dataCharts.push is not a function" 2) Попытался конвертировать таким вот образом:
var obj = {};
dataCharts.forEach(function(element, index){
obj[index] = element;
});
console.log(obj);
получаю вот такой такой вариант: Object [Object, Object] |
Цитата:
|
okuznetsov1,
var arr = [
{Rank:1,Country:"Moscow",US$:"101994"},
{Rank:2,Country:"Luxembourg",US$:"101"},
{Rank:3,Country:"Monaco",US$:"1019"}
]
var dataCharts = { cols: [{id: "year",label: "Год",type: "string"}]};
arr.forEach(function (element, index) {
dataCharts.cols.push( {id: element.Rank,label: element.Country,type: element.US$} );
});
dataCharts.rows = ["не понимаю что вы тут хотите сделать"] ;
console.log(dataCharts);
|
На основе массива "arr" нужно сформировать объект следующего вида:
dataCharts = {
"cols": [{
id: "year",
label: "Год",
type: "string"
}, {
id: "1",
label: "Luxembourg",
type: "number"
}, {
id: "2",
label: "Switzerland",
type: "number"
}, {
id: "3",
label: "Norway",
type: "number"
}],
"rows": [{
c: [{
v: "2015"
}, {
v: 101994,
f: "101994"
}, {
v: 80603,
f: "80603"
}, {
v: 74598,
f: "74598"
}]
}]
};
|
okuznetsov1,
<script>
var arr = [
{Rank:1,Country:"Moscow",US$:"101994"},
{Rank:2,Country:"Luxembourg",US$:"101"},
{Rank:3,Country:"Monaco",US$:"1019"}
]
var dataCharts = { cols: [{id: "year",label: "Год",type: "string"}], rows : [{c : [{v : "2015"}]}]};
arr.forEach(function (element, index) {
dataCharts.cols.push( {id: element.Rank,label: element.Country,type: "number"} );
dataCharts.rows[0].c.push({v : +element.US$, f : element.US$})
});
document.write(JSON.stringify(dataCharts))
</script>
|
спасибо
|
| Часовой пояс GMT +3, время: 04:03. |