Как записать в многомерный массив/объект по адресу в 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'}] Вот не знаю как построить скрипт что бы по адресу записывать данные в эту переменную. Ну и так же добавлять новые дочерние объекты...
Для того, чтобы записать данные в многомерный массив с объектами по адресу, вам нужно выполнить следующие шаги:
Создать функцию, которая будет принимать массив адреса, данные для записи и сам массив данных.Перебирать элементы массива адреса, на каждом шаге находить соответствующий объект в массиве данных.Если дошли до конца адреса, записать новые данные в нужный объект.Если нужно добавить новый дочерний объект, создать его и добавить в массив дочерних элементов нужного объекта.
Вот пример реализации этой функции:
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); // Проверяем, что данные были успешно записаны
Этот код поможет вам записать новые данные по указанному адресу в вашем массиве данных. В случае необходимости добавления новых дочерних объектов, функция также обрабатывает этот случай.
Для того, чтобы записать данные в многомерный массив с объектами по адресу, вам нужно выполнить следующие шаги:
Создать функцию, которая будет принимать массив адреса, данные для записи и сам массив данных.Перебирать элементы массива адреса, на каждом шаге находить соответствующий объект в массиве данных.Если дошли до конца адреса, записать новые данные в нужный объект.Если нужно добавить новый дочерний объект, создать его и добавить в массив дочерних элементов нужного объекта.Вот пример реализации этой функции:
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); // Проверяем, что данные были успешно записаны
Этот код поможет вам записать новые данные по указанному адресу в вашем массиве данных. В случае необходимости добавления новых дочерних объектов, функция также обрабатывает этот случай.