делаю, вроде получается.
нет, не получилось. Нужна поомщь)
возвращайтесь данные хд вы ж мутировать хотите, да?
[ { "id": 1, "uuid": "46c4b2b7-f125-442c-81be-256ae42c8fb2", "name": "3242", "open": true, "children": [ { "id": 2, "uuid": "e77c2e35-b9e4-4114-8c5b-ae00df9a7cbc", "name": "324" }, ] } ]
да. Есть массив с ключом children. Который содержит точно такой же интерфейс как родительский. Я должен найти элемет по uuid и добавить ему ключ children со значением
const findByUUID = (arr, uuid) => { for (const item of arr) { if (item.uuid === uuid) return item; if (!item.children?.length) continue; const matchedChild = findByUUID(item.children, uuid); if (matchedChild) return matchedChild; } return null; }; ну пусть так
ого спасибо большое. Я присвоил функцию к переменной и функция работает. Он находит элемент и присваивает. А как мне изменить в массиве? Я должен в главном массиве найти элемент и добавить к нему ключь
объекты - по ссылке, так что вам придёт ссылка на тот же элемент, что в массиве. по итогу что-то типа того: const item = findByUUID(arr, uuid); if (item) { item.children = []; }
я так и сделал, пробовал разные вариант но ссылочный тип не срабатывает.
я так использую ваш метод. App на angular но не суть. При клике на стрелку в дереве должно добавится children и снизу показываются дочерние узлы. Я делаю запрос на сервер получаю дочерние элементы и в массиве должен найти выбранный элемент и присвоить ему children.
просто в запросе все дело. Портит ссылочный тип
ну так у вас когда данные приходят, вы же их парсите, так? пихаете куда-то в стор или типа того, там уже ссылки, всё должно быть ок. или я, как всегда, не догоняю
я сделал запрос и дложен в массив присвоить. КОгда идет запрос ссылочный тип прервался.
куда он прервался-то? я ничего не понимаю... можете конкретную последовательность действий назвать, когда и что ломается
1. В шаблоне показываются родительские элементы. 2. Пользователь выбирает один родительский элемент. 3. Идет запрос на получения дочерних элементов. 4. В главном массиве родительскому элементу присваиваю children: []. 5. У этого children может быть свои дочерние элементы. У этих дочерних элементов может быть свои дочерние элементы. Каждый раз когда пользователь выбирает элемент у меня идет запрос и полученные данные я должен присвоить.
ну, так всё ок же ссылку никуда не теряются, если вы исходный массив не переписываете
Хм, я уехал домой, уже завтра посмотрю. Спасибо вами огромное что откликнулись на помощь
Обсуждают сегодня