Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.05.2016, 22:33
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dmi,
[{
	"Itemid":35,
	"name":"test",
	"hide":0
},{
	"Itemid":36,
	"name":"test22",
	"hide":0
},{
	"Itemid":37,
	"name":"test33",
	"hide":0
},{
	"Itemid":38,
	"name":"test32",
	"hide":0
},{
	"Itemid":39,
	"name":"test44",
	"hide":0,
	"parentId":37
},{
	"Itemid":40,
	"name":"test55",
	"hide":0,
	"parentId":37
},{
	"Itemid":41,
	"name":"test45",
	"hide":0,
	"parentId":39
},{
	"Itemid":42,
	"name":"test56",
	"hide":0,
	"parentId":39
}]
Ответить с цитированием
  #12 (permalink)  
Старый 19.05.2016, 22:40
dmi dmi вне форума
Новичок на форуме
Отправить личное сообщение для dmi Посмотреть профиль Найти все сообщения от dmi
 
Регистрация: 19.05.2016
Сообщений: 6

Rise,
вопрос как с помощью функции туда поместить, а не как правильно написать слово parent или child

)
В принципе через some работает - но не подходит для многомерного массива
при попытке обратится к элементу в духе a.parent.Itemid - ничего не происходит
Ответить с цитированием
  #13 (permalink)  
Старый 19.05.2016, 22:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,074

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>
Ответить с цитированием
  #14 (permalink)  
Старый 19.05.2016, 22:52
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

dmi, то что ты пишешь parent, а подразумеваешь child, как бы для других не очевидно, страшно представить что ты еще можешь подразумевать...
Ответить с цитированием
  #15 (permalink)  
Старый 19.05.2016, 23:24
dmi dmi вне форума
Новичок на форуме
Отправить личное сообщение для dmi Посмотреть профиль Найти все сообщения от dmi
 
Регистрация: 19.05.2016
Сообщений: 6

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

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;
}

Последний раз редактировалось dmi, 19.05.2016 в 23:26.
Ответить с цитированием
  #16 (permalink)  
Старый 20.05.2016, 00:34
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Так и не поняли что подразумевал автор под data...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление / добавление JSON Alexander Belov Events/DOM/Window 16 01.05.2015 23:51
Вставка json данных 1lider AJAX и COMET 5 14.02.2015 21:18
Сортировка JSON данных в цикле Fareastaz jQuery 12 15.03.2013 20:20
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Преобразование данных с сервера в JSON frolvict Общие вопросы Javascript 1 04.04.2010 12:26