19.05.2016, 22:33
|
Профессор
|
|
Регистрация: 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
}]
|
|
19.05.2016, 22:40
|
Новичок на форуме
|
|
Регистрация: 19.05.2016
Сообщений: 6
|
|
Rise,
вопрос как с помощью функции туда поместить, а не как правильно написать слово parent или child
)
В принципе через some работает - но не подходит для многомерного массива
при попытке обратится к элементу в духе a.parent.Itemid - ничего не происходит
|
|
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>
|
|
19.05.2016, 22:52
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
dmi, то что ты пишешь parent, а подразумеваешь child, как бы для других не очевидно, страшно представить что ты еще можешь подразумевать...
|
|
19.05.2016, 23:24
|
Новичок на форуме
|
|
Регистрация: 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.
|
|
20.05.2016, 00:34
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Так и не поняли что подразумевал автор под data...
|
|
|
|