Как записать в многомерный массив/объект по адресу в JavaScript? Приветствую. Вот не пойму как записать данные в многомерный массив с объектами по адресу. Например есть массив, адрес (по свойству key) и новые данныеvar data = [
{key:'raz', cells:[{val: '1'},{val:'razoviy'}]},
{key:'dva', cells:[{val: '2'},{val:'vtoroy'}],children:[
{key:'poddva', cells:[{val: '2'},{val:'podvtoroy'}],children:
[{key:'podpoddva', cells:[{val: '2'},{val:'podpodvtoroy'}]},{key:'raz', cells:[{val: '1'},{val:'raz'}]}]
},
{key:'poddvadva', cells:[{val: '2'},{val:'podvtoroyvtoroy'}]}
]},
{key:'tri', cells:[{val: '3'},{val:'trtiy'}]}
]
var adres = ['dva','poddva','raz']
var newDataCells = [{val: '1.0'},{val:'raz raz, est svyaz'}]
Вот не знаю как построить скрипт что бы по адресу записывать данные в эту переменную. Ну и так же добавлять новые дочерние объекты...

21 Авг 2019 в 06:25
175 +1
0
Ответы
1

Для того, чтобы записать данные в многомерный массив с объектами по адресу, вам нужно выполнить следующие шаги:

Создать функцию, которая будет принимать массив адреса, данные для записи и сам массив данных.Перебирать элементы массива адреса, на каждом шаге находить соответствующий объект в массиве данных.Если дошли до конца адреса, записать новые данные в нужный объект.Если нужно добавить новый дочерний объект, создать его и добавить в массив дочерних элементов нужного объекта.

Вот пример реализации этой функции:

function setDataByAddress(address, newDataCells, data) {
let currentObj = data;
for (let i = 0; i < address.length; i++) {
const key = address[i];
if (currentObj && currentObj.children) {
currentObj = currentObj.children.find(obj => obj.key === key);
} else {
break;
}
}
if (currentObj) {
currentObj.cells = newDataCells;
} else {
let parentObj = data;
for (let i = 0; i < address.length - 1; i++) {
const key = address[i];
parentObj = parentObj.children.find(obj => obj.key === key);
}
if (parentObj) {
const key = address[address.length - 1];
const newObj = {
key: key,
cells: newDataCells
};
parentObj.children.push(newObj);
}
}
}
setDataByAddress(adres, newDataCells, data);
console.log(data); // Проверяем, что данные были успешно записаны

Этот код поможет вам записать новые данные по указанному адресу в вашем массиве данных. В случае необходимости добавления новых дочерних объектов, функция также обрабатывает этот случай.

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир