Challenge técnico en cuatro pasos con dificultad incremental. Cada ejercicio trabaja sobre el mismo dataset con métodos nativos de JavaScript.
Tenés un arreglo de productos. Cada uno tiene nombre, precio y stock.
Usá Array.filter para obtener solo los productos que tienen stock > 0.
Guardá el resultado en una variable llamada disponibles.
const productos = [ { nombre: "Manzana", precio: 150, stock: 30 }, { nombre: "Banana", precio: 90, stock: 0 }, { nombre: "Naranja", precio: 120, stock: 15 }, { nombre: "Pera", precio: 200, stock: 0 }, { nombre: "Uva", precio: 350, stock: 8 }, ];
array.filter(item => condición) devuelve un nuevo arreglo solo con los elementos donde la condición es true. Para acceder a una propiedad usá item.stock.
const disponibles = productos.filter(p => p.stock > 0)
Con el mismo arreglo de productos, usá Array.map para generar un nuevo arreglo de strings con este formato:
"Manzana — $150"
El resultado debe tener un string por cada producto. Guardalo en etiquetas.
const productos = [ { nombre: "Manzana", precio: 150, stock: 30 }, { nombre: "Banana", precio: 90, stock: 0 }, { nombre: "Naranja", precio: 120, stock: 15 }, { nombre: "Pera", precio: 200, stock: 0 }, { nombre: "Uva", precio: 350, stock: 8 }, ];
array.map(item => expresión) transforma cada elemento y devuelve un nuevo arreglo del mismo tamaño.`${item.nombre} — $${item.precio}`
Los productos ahora tienen una propiedad categoria. Usá Array.reduce para construir un diccionario donde cada clave sea una categoría y el valor sea un arreglo con los nombres de los productos de esa categoría.
Guardá el resultado en agrupados.
const productos = [ { nombre: "Manzana", categoria: "fruta", precio: 150 }, { nombre: "Banana", categoria: "fruta", precio: 90 }, { nombre: "Zanahoria", categoria: "verdura", precio: 80 }, { nombre: "Lechuga", categoria: "verdura", precio: 60 }, { nombre: "Uva", categoria: "fruta", precio: 350 }, { nombre: "Papa", categoria: "verdura", precio: 50 }, ];
reduce((acum, item) => { ... }, {}) empieza con un objeto vacío como acumulador.acum[item.categoria] = acum[item.categoria] || []acum[item.categoria].push(item.nombre)return acum
Combiná todo en un solo pipeline encadenado, sin variables intermedias. A partir del arreglo:
stock > 0precio <= 200{ nombre, total: precio * stock }totalresultado.
const productos = [ { nombre: "Manzana", precio: 150, stock: 30 }, { nombre: "Banana", precio: 90, stock: 0 }, { nombre: "Naranja", precio: 120, stock: 15 }, { nombre: "Pera", precio: 200, stock: 12 }, { nombre: "Uva", precio: 350, stock: 8 }, { nombre: "Mandarina", precio: 100, stock: 25 }, ];
productos.filter(...).filter(...).map(...).sort(...).sort((a, b) => b.total - a.total)
Los cuatro pasos fueron resueltos correctamente.