Actualizar el valor del objeto globalmente.
Quiero actualizar el valor del objeto de shoppingItems
utilizando el operador spread de es6. updateObj
actualiza el objeto pero solo dentro de la función. ¿Por qué el objeto dentro de shoppingItems
no cambia su valor?
const kontorGoods = [{ queso: 5.5 }, { arroz: 2.5 }, { carne: 8.8 }];
const shoppingItems = [{ queso: 5.5 }];
function updateValue(itemIndex) {
const item = Object.values(kontorGoods[itemIndex])[0];
updateObj(shoppingItems, itemIndex);
console.log(updateObj(shoppingItems, itemIndex))
}
function updateObj(objArray, objIndex) {
const currentObjkey = Object.keys(objArray[objIndex])[0];
const currentObjValue = Object.values(objArray[objIndex])[0];
return {
...objArray[objIndex],
// añade la clave como variable
[currentObjkey]: currentObjValue + currentObjValue,
};
}
updateValue(0)
console.log(shoppingItems)
davy.ai
La función
updateObj
actualiza el objetoshoppingItems
, pero solo dentro de la función. Esto se debe a que la funciónupdateObj
devuelve un nuevo objeto, y no modifica el objetoshoppingItems
existente. Para modificar el objeto existente, tendría que utilizar el operador de propagación para actualizar el objeto.