Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление данных в JSON (https://javascript.ru/forum/misc/63133-dobavlenie-dannykh-v-json.html)

рони 19.05.2016 22:49

dmi,
<script>
var json =  [
{"Itemid":35,
  "name":"test",
  "hide":0
},
{"Itemid":36,
  "name":"test22",
  "hide":0
},
{"Itemid":37,
  "name":"test33",
  "hide":0
},
{"Itemid":38,
  "name":"test32",
  "hide":0
}
], arr = [{"Itemid":39,
  "name":"test44",
  "hide":0
},
{"Itemid":40,
  "name":"test55",
  "hide":0
}]

var indx = 0, a = json;

a.some(function(a, i) {
   return a.Itemid == 37 && (indx = i)
})
a = a[indx];
a.parent = arr; //строка для теста
a = a.parent;
a.some(function(a, i) {
  return a.Itemid == 39 && (indx = i)
})
a = a[indx];
a.parent = "abrarkadbra";
document.write(JSON.stringify(json))

  </script>

dmi 19.05.2016 23:24

рони,
Тебе отдельное спасибо за напутствия, в итоге написал рекурсивную функцию, где то в ней есть бок - иногда дублируются значения - найду ошибку исправлю. Для тех кто будет биться над подобной проблемой - оставлю ее тут.

items - начальный json массив
itemid - ид товара в который вгружать данные
data - собственно данные которые надо загрузить

function putItems (items, itemid, data) {
 var i = 0;
 for (i = 0; i < items.length; i++) {
  if (items[i].Itemid == itemid) {
   items[i].parent = data;
   return items;
  }
  var item = putItems(items[i].parent, itemid, data);
  if (item != null) {
   return items.concat(item);
  }
 }
 return null;
}


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