Как записать в многомерный массив/объект по адресу в 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
201 +2
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 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир