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

86
Vistas
Filtre la matriz de objetos según la categoría y devuelva la lista de coincidencias React TS

Tengo problemas para filtrar una matriz de objetos en función de una propiedad determinada.

La matriz de objetos se parece a esto:

 someData: [{ id: "123", personData: [ { personName: "John Smith", personId: "125443", categoryId: "B1", description: "description" }}]}];

Quiero agrupar los datos de persona en función de la identificación de categoría, pero representar la agrupación de categorías por su nombre de categoría (en lugar de la identificación, ya que esto no tendrá mucho sentido para el usuario).

Hay una serie de categorías que están contenidas en un json con el siguiente formato:

 const groups = { data: [ { categoryName: "Banking", categoryId: "B1", description: "Financial sector" }, { categoryName: "Retail", categoryId: "R1", description: "Retail and customer experience" } ] };

¿Cómo haría para filtrar en función de estas condiciones? ¡Toda ayuda es muy apreciada! estoy usando react y mecanografiado

Una vez filtrados, los datos deberían verse así:

 Banking personName: John Smith personId: 125443 Retail personName: Judie Smith personId: 124938
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Creo que algo similar a esta función devolvería lo que necesita.

 const data = [ { categoryName: "Banking", categoryId: "B1", description: "Financial sector" }, { categoryName: "Retail", categoryId: "R1", description: "Retail and customer experience" } ]; function groupByProperty(arrayOfObjects, property) { return arrayOfObjects.reduce((acc, curr) => { const key = curr[property]; if (!acc[key]) { acc[key] = []; } acc[key].push(curr); return acc; }, {}); } const dataByCategoryName = groupByProperty(data, "categoryName"); console.log(dataByCategoryName); /* Output { Banking: [{ categoryId: "B1", categoryName: "Banking", description: "Financial sector" }], Retail: [{ categoryId: "R1", categoryName: "Retail", description: "Retail and customer experience" }] } */
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede probar groupBy con los datos de esa persona.

 const products = [ { name: 'apples', category: 'fruits' }, { name: 'oranges', category: 'fruits' }, { name: 'potatoes', category: 'vegetables' } ]; const groupByCategory = products.groupBy(product => { return product.category; }); console.log(groupByCategory); // { // 'fruits': [ // { name: 'apples', category: 'fruits' }, // { name: 'oranges', category: 'fruits' }, // ], // 'vegetables': [ // { name: 'potatoes', category: 'vegetables' } // ] // }
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