Así que recientemente aprendí sobre el uso de bucles for in para recorrer objetos. Nos dieron este problema para resolver con respecto a un objeto de carrito básico que contiene el nombre del objeto y luego la cantidad y el precio.
const cart = {
"Gold Round Sunglasses": { quantity: 1, priceInCents: 1000 },
"Pink Bucket Hat": { quantity: 2, priceInCents: 1260 },
};
Tenemos que escribir 2 funciones, una que calcule el costo total del inventario en centavos y la otra muestre el inventario.
Pude terminar la pregunta uno con facilidad, pero estoy luchando con la segunda.
1ra función:
function calculateCartTotal(cart) {
let total = 0;
for(let item in cart){
const product = cart[item]
const quantity = product.quantity
const price = product.priceInCents
total += quantity * price
}
return total
}
2da función:
function printCartInventory(cart) {
let inventory = ""
for(let item in cart){
const product = cart[item]
const quantity = product.quantity
inventory += `${quantity}x${product}/n`
}
return inventory
}
Cuando pruebo la segunda función, el calificador automático da este error:
expected '2x[object Object]/n1x[object Object]/n1x[object Object]/n3x[object Object]/n' to include '2xCanvas Tote Bag\n1xBlack and White Chuck On Dress\n1xNatural Straw Wide Brim Hat\n3xBlue Stripe Casual Shirt'
Cuando mire el mensaje de error, observe la parte que dice [object Object] . Esto es parte de la salida de su código y debería sonarle. Significa que su código intenta poner un objeto en una cadena, en lugar de una cadena.
El código culpable está aquí:
inventory += `${quantity}x${product}/n`
product no es una cadena, sino un objeto. No es lo que pretendías generar allí. Lo que desea generar es el nombre del producto, que es la clave , no el valor asociado con esa clave. Entonces debería ser:
inventory += `${quantity}x${item}/n`