Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
¿Cómo devuelvo un objeto de una función?

Me encontré con este desafío para mi curso que no puedo resolver por mi vida.

Se le da una función con un solo parámetro que es una matriz anidada con objetos.

 function sortProducts (matrix) `enter code here`

La matriz (matriz) se ve así:

 [ [ { product: "MacBook", price: 1019, category: 'tech'}, { product: "Cheerios", price: 5, category: 'food'}, ], [ { product: "Snickers", price: 1.5 , category: 'food'}, { product: "Air Pods", price: 129, category: 'tech'}, ], ];

Instrucciones: Dentro de la matriz matriz, cada matriz anidada contiene objetos. Cada objeto representa un producto.

La función debe recorrer la matriz y crear un nuevo objeto que contenga los productos ordenados por categoría. Luego, la función debe devolver este objeto de resultado que contiene productos clasificados, almacenados en propiedades tecnología y alimentos.

El objeto de resultado debe tener la siguiente estructura:

 { tech: [ { tech product }, { tech product } ], food: [ { food product }, { food product } ], };

Entonces, según tengo entendido, el primer paso sería recorrer la matriz para crear este nuevo objeto. Este objetado tendría que ordenar los productos por categoría en el formato (tech: 'tech product', food: 'food product'.

Sé que la respuesta va a ser tan simple, pero no puedo hacerlo por mi vida.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Una forma sería aplanar la matriz primero usando flatMap() y luego usar reduce para agrupar por categoría. Aquí hay un ejemplo:

 let arr = [ [ { product: "MacBook", price: 1019, category: 'tech'}, { product: "Cheerios", price: 5, category: 'food'}, ], [ { product: "Snickers", price: 1.5 , category: 'food'}, { product: "Air Pods", price: 129, category: 'tech'}, ], ] let result = arr.flatMap(i => i).reduce((c, p) => { c[p.category] = c[p.category] || []; c[p.category].push(p); return c; }, {}); console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar

0

No entiendo por qué se llama "sortProducts", no clasifica, solo analiza o convierte la entrada en otro objeto.

Prueba algo como esto:

 function sortProducts(matrix){ var result = {}; for (let i = 0; i < matrix.length; i++) { const arr = matrix[i]; for (let j = 0; j < arr.length; j++) { const obj = arr[j]; var newObj = { product: obj.product, price: obj.price}; // If result already has the category then just push the new object if (result[obj.category]) { result[obj.category].push(newObj); continue; } // Otherwise add the category and add the object inside an array // This automaticly ensures that the result.category is an array result[obj.category] = [newObj]; } } return result; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Así que la solución fue aún más simple de lo que pensaba :'(

 function sortProducts (matrix) { const tech = []; const food = []; for (let i = 0; i < matrix.length; i++) { const arr = matrix[i]; for (let j = 0; j < arr.length; j++) { const product = arr[j]; if ( product.category === 'tech') { tech.push(product); } else if (product.category === 'food') { food.push(product); } }; }; return { tech: tech, food: food, } }

No tengo idea de cómo no me di cuenta de eso. Ojalá pueda continuar esta curva de aprendizaje.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda