Dia 3: Inventario de juguetes
Santa Claus 🎅 está revisando el inventario de su taller para preparar la entrega de regalos. Los elfos han registrado los juguetes en un array de objetos, pero la información está un poco desordenada. Necesitas ayudar a Santa a organizar el inventario.
Recibirás un array de objetos, donde cada objeto representa un juguete y tiene las propiedades:
name: el nombre del juguete (string).
quantity: la cantidad disponible de ese juguete (entero).
category: la categorÃa a la que pertenece el juguete (string).
Escribe una función que procese este array y devuelva un objeto que organice los juguetes de la siguiente manera:
Las claves del objeto serán las categorÃas de juguetes. Los valores serán objetos que tienen como claves los nombres de los juguetes y como valores las cantidades totales de cada juguete en esa categorÃa. Si hay juguetes con el mismo nombre en la misma categorÃa, debes sumar sus cantidades. Si el array está vacÃo, la función debe devolver un objeto vacÃo {}.
const inventary = [
{ name: 'doll', quantity: 5, category: 'toys' },
{ name: 'car', quantity: 3, category: 'toys' },
{ name: 'ball', quantity: 2, category: 'sports' },
{ name: 'car', quantity: 2, category: 'toys' },
{ name: 'racket', quantity: 4, category: 'sports' }
]
organizeInventory(inventary)
// Resultado esperado:
// {
// toys: {
// doll: 5,
// car: 5
// },
// sports: {
// ball: 2,
// racket: 4
// }
const inventary2 = [
{ name: 'book', quantity: 10, category: 'education' },
{ name: 'book', quantity: 5, category: 'education' },
{ name: 'paint', quantity: 3, category: 'art' }
]
organizeInventory(inventary2)
// Resultado esperado:
// {
// education: {
// book: 15
// },
// art: {
// paint: 3
// }
// }
Solution
function organizeInventory(inventory) {
return inventory.reduce((acc, { category, name, quantity }) => {
acc[category] ||= {}
acc[category][name] = acc[category][name] ||= 0
acc[category][name] += quantity
return acc
}, {})
}
organizeInventory([
{ category: 'toys', name: 'doll', quantity: 3 },
{ category: 'toys', name: 'car', quantity: 5 },
{ category: 'books', name: 'storybook', quantity: 2 },
{ category: 'toys', name: 'doll', quantity: 2 }
])