CÓDIGO:
let references = [ { nombre: 'productA', priceUsd: 2200, qty: 15 }, { nombre: "productB", priceUsd: 1500, qty: 20 }, { nombre: "productC", priceUsd: 3000, qty: 7 } ]; const store = { products: references, increasePrice: function(percToAdd) { return this.products.forEach(item =>item['priceUsd']=item.priceUsd*(1+percToAdd/100));} } const increased = store.increasePrice(30); console.log(increased)PRODUCCIÓN:
undefinedPero estoy buscando algo como esto:
[ { nombre: 'productA', priceUsd: 2860, qty: 15 }, { nombre: "productB", priceUsd: 1950, qty: 20 }, { nombre: "productC", pricesUsd: 3900, qty: 7 } ]Probé el código fuera del método y funciona pero cuando lo pongo dentro de una función ya no funciona.
Esto se debe a que forEach devuelve valor (modifica la matriz), sino que realiza ciertas operaciones en cada elemento de la matriz.
Puede utilizar el map para este caso.
let references = [ { nombre: 'productA', priceUsd: 2200, qty: 15 }, { nombre: "productB", priceUsd: 1500, qty: 20 }, { nombre: "productC", priceUsd: 3000, qty: 7 } ]; const store = { products: references, increasePrice: function (percToAdd) { return this.products.map(item => ({ ...item, ["priceUsd"]: item.priceUsd * (1 + percToAdd / 100) })); } } const increased = store.increasePrice(30); console.log(increased) También ha escrito incorrectamente priceUsd en el último elemento de references .