Почему получаю ошибку "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, время: 21:55. |