Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать новый массив из массива внутри объекта? (https://javascript.ru/forum/misc/63527-kak-sozdat-novyjj-massiv-iz-massiva-vnutri-obekta.html)

Enkille 13.06.2016 12:35

Как создать новый массив из массива внутри объекта?
 
Использую fullcalendar, которому для получения событий в календарь нужен массив. Сейчас я получаю объект flowJs, внутри которого есть нужный мне массив events. Вопрос: как выбрать этот массив в другую переменную или сделать на него ссылку.

Пример:
var flowJs = {
  "user": "admin",
  "active": true,
  "methodService": 1,
  "events": [
  {
    "title": "Alex Smith",
    "start": "2016-06-15",
    "end": "2016-06-15",
  },
  {
    "title": "John Smith",
    "start": "2016-06-16",
    "end": "2016-06-16",
  }]
}


Чтобы получить:
var events = [
  {
    "title": "Alex Smith",
    "start": "2016-06-15",
    "end": "2016-06-15",
  },
  {
    "title": "John Smith",
    "start": "2016-06-16",
    "end": "2016-06-16",
  }]

Спасибо больше за помощь!

рони 13.06.2016 12:38

Enkille,
:-?
var events = flowJs.events ;

pureJS 13.06.2016 19:00

Enkille, есть два способа:
var events = flowJs.events;
//или так:
var events = flowJs['events'];

Benos 13.07.2016 23:57

Подскажите пожалуйста правильный ли принцип запись данных в объект...
if(!(aJSON.data.Id in Data)){ // проверка наличия 
     Data[aJSON.data.Id] = {}; // новый {} для ID если его нет в Data
}
Data[aJSON.data.Id].name = aJSON.data.name;  
var ReTMP = [];
for(var d = 1; d < 5; d++){ // так надо... с "1" :)   
    ReTMP.push(Number(aJSON.data.prod[d]));     
    ReTMP.push(Math.round(aJSON.data.stor[d])); 
    ReTMP.push(Number(aJSON.data.cap[d]));      
}
Data[aJSON.data.Id].Re = ReTMP; // массив 13
addSum('Re', ReTMP);

function addSum(item, Data){
    if(!("total" in Data)){
          Data["total"] = {};
          Data["total"].name = "Всего";
    }
    for(var i = 1; i < 13; i ++){ // так надо... с "1" :)   
        itemDataSum[i] = itemDataSum[i] + Data[i];
    }
    Data.total[item] = itemDataSum; // исправил...
}

aJSON.data - объект, часть его данных надо переписать в объект Data

Вид объекта Data:
Data = {
         ID1: {
                   name: "Имя",
                   Re:  [1,4,65,2 ..... ]
                }
         ID2: { .... }
         ...............
         total: {
                   name: "Всего",
                   Re:  [1,4,65,2 ..... ]
                }
}

Что то данные по отдельности консоль выводит... а при записи в объект не пашет.

рони 14.07.2016 00:03

Benos,
в строке 22 ничего странного не видите, вы или консоль?

Benos 14.07.2016 00:06

забыл добавить...
aJSON.data.Id - число, возможно играет роль

Benos 14.07.2016 00:08

Цитата:

Сообщение от рони (Сообщение 422001)
Benos,
в строке 22 ничего странного не видите, вы или консоль?

виноват... это я тут ошибся... перебирал варианты...
изначально было так...
Data[total][item] = itemDataSum;
потом
Data.total[item] = itemDataSum;

рони 14.07.2016 00:22

Benos,
если вопрос остался сделайте нормальный макет, чтобы не гадать что такое itemDataSum

Benos 14.07.2016 00:32

Кажись понял где косяк...
addSum('Re', ReTMP); //вызываю функцию с двумя параметрами


function addSum(item, Data){ // item = 'Re', ReTMP = Data

но это не та "Data"... которая объект... это массив ReTMP и в нем я пытаюсь найти ID и записать данные )

З.Ы. Общение с умными людьми... просветляет :)

Benos 14.07.2016 16:24

все таки косяк не нашел...
похоже что то в функции addSum криво...
собрал макет данных JSON ответа и функцию обработки...
все пашет, кроме суммирования...

Если есть возможность посмотрите пожл. кто-нибудь...
https://jsfiddle.net/Benos/3v95bjw5/


Часовой пояс GMT +3, время: 02:00.