Как создать новый массив из массива внутри объекта?
Использую 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",
}]
Спасибо больше за помощь! |
Enkille,
:-? var events = flowJs.events ; |
Enkille, есть два способа:
var events = flowJs.events; //или так: var events = flowJs['events']; |
Подскажите пожалуйста правильный ли принцип запись данных в объект...
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 ..... ]
}
}
Что то данные по отдельности консоль выводит... а при записи в объект не пашет. |
Benos,
в строке 22 ничего странного не видите, вы или консоль? |
забыл добавить...
aJSON.data.Id - число, возможно играет роль |
Цитата:
изначально было так... Data[total][item] = itemDataSum; потом Data.total[item] = itemDataSum; |
Benos,
если вопрос остался сделайте нормальный макет, чтобы не гадать что такое itemDataSum |
Кажись понял где косяк...
addSum('Re', ReTMP); //вызываю функцию с двумя параметрами
function addSum(item, Data){ // item = 'Re', ReTMP = Data
но это не та "Data"... которая объект... это массив ReTMP и в нем я пытаюсь найти ID и записать данные ) З.Ы. Общение с умными людьми... просветляет :) |
все таки косяк не нашел...
похоже что то в функции addSum криво... собрал макет данных JSON ответа и функцию обработки... все пашет, кроме суммирования... Если есть возможность посмотрите пожл. кто-нибудь... https://jsfiddle.net/Benos/3v95bjw5/ |
Benos,
такой результат должен быть?
{
"537313333": {
"name": "ельк",
"Re": [
1100,
68031,
102000,
1276,
80732,
102000,
1188,
92247,
102000,
1345,
52458,
80000
]
},
"539050004": {
"name": "Мк",
"Re": [
1000,
16768,
80000,
1000,
5123,
80000,
1000,
22674,
80000,
-170,
52461,
80000
]
},
"539115542": {
"name": "аи",
"Re": [
70,
8585,
14400,
70,
6780,
14400,
50,
2105,
14400,
567,
30584,
38000
]
},
"539246594": {
"name": "ирво",
"Re": [
495,
22853,
26000,
465,
10958,
26000,
270,
3483,
26000,
971,
55432,
66000
]
},
"total": {
"name": "Всего",
"Re": [
2665,
116237,
222400,
2811,
103593,
222400,
2508,
120509,
222400,
2713,
190935,
264000
]
}
}
|
Да точно так...
|
Benos,
// обнуляем временный массив с суммой
function cleanTotal(){
itemDataSum = [];
}
// суммируем данные
function addSum(item, itemArray){
if(!('total' in Data)){
Data["total"] = {};
Data["total"].name = "Всего";
}
for(var i = 0; i < itemArray.length; i++){
itemDataSum[i] = (+itemDataSum[i]||0) + +itemArray[i];
}
Data["total"][item] = itemDataSum;
}
|
рони,
Спасибо! не могу "+" в карму поставить... форум ругается :) а что значит? (+itemDataSum[i]||0) |
Benos,
либо число или "строка-число" из массива или ноль если элемент массива пуст |
| Часовой пояс GMT +3, время: 20:47. |