Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2017, 11:14
Аспирант
Отправить личное сообщение для okuznetsov1 Посмотреть профиль Найти все сообщения от okuznetsov1
 
Регистрация: 02.11.2016
Сообщений: 65

Почему получаю ошибку "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, 06.03.2017 в 11:41.
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2017, 11:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от okuznetsov1
Почему получаю ошибку "TypeError: dataCharts.push is not a function"?
Потому, что изменяю строку "var dataCharts = [];" на "var dataCharts = {};", а объект не имеет метода .push().
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2017, 11:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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);
Ответить с цитированием
  #4 (permalink)  
Старый 06.03.2017, 11:35
Аспирант
Отправить личное сообщение для okuznetsov1 Посмотреть профиль Найти все сообщения от okuznetsov1
 
Регистрация: 02.11.2016
Сообщений: 65

На основе массива "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"
                }]
              }]
            };
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2017, 11:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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>
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2017, 12:13
Аспирант
Отправить личное сообщение для okuznetsov1 Посмотреть профиль Найти все сообщения от okuznetsov1
 
Регистрация: 02.11.2016
Сообщений: 65

спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получаю ошибку: Error: missing ; before statement okuznetsov1 Angular.js 4 27.02.2017 22:13
Prototype. Одноблочное определение псевдокласса. Литеральная форма не робит. Почему? GuardCat Общие вопросы Javascript 6 03.10.2011 13:46
Почему offset().top не работает в ИЕ Afonin jQuery 2 08.07.2011 10:08
Почему не определяется втарая переменная? Арман Общие вопросы Javascript 3 09.04.2011 11:14
Почему получаю неопознанную ошибку в IE8? KOLANICH Общие вопросы Javascript 1 25.06.2010 22:12