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

149
Vistas
¿Cómo puedo hacer que la función me devuelva un objeto con categorías?

Entonces, estoy tratando de clasificar objetos de categoría de alimentos o categoría de tecnología, como un objeto por categorías como resultado final. Tengo esta entrada para los argumentos en mi función y luego mi resultado final debería devolverme un objeto con ambos

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

Entonces, lo que tengo es una función en la que trato de construir una matriz con objetos que clasifican los productos. Hasta ahora, esto es lo que he podido desarrollar es este código, pero por alguna razón solo obtengo que me devuelva un objeto vacío, no un objeto con ambas categorías como estoy intentando.

 function sortProducts (matrix) { const matrixResult = {}; for (i = 0; i < matrix.length; i++){ let techProd = matrix[i]; let techCategory = matrix[i].category; let techCategFilter = techCategory === 'tech'; if (techCategFilter){ let arrTech = [] arrTech.push (techProd[i]); matrixResult.tech = arrTech; } } for (i = 0; i < matrix.length; i++){ let foodProd = matrix[i]; let foodCategory = matrix[i].category; let foodCategFilter = foodCategory === 'food'; if (foodCategFilter){ let arrFood = [] arrFood.push (foodProd[i]); matrixResult.food = arrFood; } } return matrixResult; }

¿Qué me estoy perdiendo o dónde me estoy equivocando?

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

0

Use reducir o filtrar, según el tamaño de su matriz. Me decidí por forEach, ya que es más fácil de leer.

 const result = {}; products.forEach(product => { const category = product.category; if (result[category]) { result[category].push(product); } else { result[category] = [product]; } })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Veo varios problemas con este código.

  1. Las matrices arrFood y arrTech se inicializan cada vez en bucle, por lo que los objetos más antiguos empujados se sobrescriben cada vez en el bloque if y siempre tendrá solo 1 objeto como máximo.
  2. foodProd = matrix[i] le dará el objeto del producto alimenticio, pero luego empujará foodProd[i] a la matriz, que supongo que no estará definida.

Pruebe esto (arregló los problemas anteriores y también acortó un poco):

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

también puede usar forEach en lugar de looping o reducer como lo sugiere @HPSingh.

para cada ejemplo:

 var matrixResult = { tech: [], food: []}; matrix.forEach( obj => { if(obj.category === 'food') matrixResult.food.push(obj); else if(obj.category === 'tech') matrixResult.tech.push(obj); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Entonces, después de consultar con un colega, recomendó esto, que funcionó muy bien.

 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, } }
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