Добрый день!
Возник какой то косяк с Arr.push() и for ... in.
var sysData = {
"53733202":["53733202",["5800", "203"]],
"53990478":["53990478",["5800", "203"]]
};
var bodyArrJSON = [];
var sesID = 111;
goGo();
function getBody(){
var bodyTMP = {};
var ctrl = 'ID';
var act = 'addItem';
bodyArrJSON[1] = [];
bodyArrJSON[0] = '/api/?c='+ctrl+'&a='+act+'&t';
for(bodyKey in sysData){
bodyTMP.list = sysData[bodyKey][1];
bodyTMP.itemId = sysData[bodyKey][0];
bodyArrJSON[1].push({ controller: ctrl, action: act, params: bodyTMP, session: sesID });
alert("Тело[i] => "+JSON.stringify(bodyArrJSON[1]));
}
alert("Общее тело => "+JSON.stringify(bodyArrJSON[1]));
}
function goGo(){
alert("Исходное тело => "+JSON.stringify(sysData));
getBody();
}
собственно есть объект с данными sysData(в реальных условиях динамический - количество элементов любое). Из этих данных собираю тело JSON запроса. Причем собираю их во временный массив, что бы в дальнейшем последовательным перебором посылать POST запросы(одна строка, один запрос).
временный массив с телами запрос имеет вид:
bodyArrJSON = ['элемент URL', ['тело1', 'тело2', 'телоN']];
По идеи должно на выходе быть так:
bodyArrJSON = [
'/api/?c=ID&a=addItem&t',
[{"controller": "ID", "action": "addItem", "params": { "list": ["5800", "203"], "itemId": "53733202" , "session": "111"},
{"controller": "ID", "action": "addItem", "params": { "list": ["5800", "203"], "itemId": "53990478" , "session": "111"}]
];
по факту слушающий элемент затирает предыдущие и в итоговом массиве идут одинаковые элементы.
https://jsfiddle.net/Benos/yfhqmkn6/
Подскажите пожалуйста в чем дело. Что то в голову не приходят другие варианты перебора...
если только for (i=0; i<...;i++) с последующим bodyArrJSON[1][i] = ... но как то громоздко выходит