Итак, у меня есть этот массив
const array = [{
id: 1,
items: {
'1': {
name: 'apple',
id: '1',
parent: {
id: 1
}
},
'2': {
name: 'orange',
id: '2',
parent: {
id: 2
}
},
}
},
{
id: 2,
items: {
'3': {
name: 'banana',
id: '3',
parent: {
id: 3
}
},
}
},
]
Я хочу переместить любой элемент из одного items
подобъекта в другой.
Пока что я выясняю, как удалить элемент из исходного объекта и обновляя этот элемент данными о новом «родителе».
const moveObjects = (element, itemId) => {
const newElements = array.map(el => {
const elsIds = Object.keys(el.items);
elsIds.forEach(id => {
if (id == itemId) {
const tempItem = el.items[itemId];
tempItem.parent = {
id: element.id,
};
delete el.items[itemId];
}
});
return el;
});
return newElements;
}
const elementToMoveTo = {
id: 2,
...
}
console.log(moveObjects(elementToMoveTo, 1))
И прямо сейчас я борюсь с тем, как обновить целевой объект с помощью этого tempItem
. Возможно, для этого нужен другой подход.
Любая помощь будет принята с благодарностью. Ссылка на jsfiddle
Результат из приведенного выше кода должен быть
const array = [{
id: 1,
items: {
'2': {
name: 'orange',
id: '2',
parent: {
id: 2
}
},
}
},
{
id: 2,
items: {
'1': {
name: 'apple',
id: '1',
parent: {
id: 2
}
},
'3': {
name: 'banana',
id: '3',
parent: {
id: 3
}
},
}
},
]