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

201
Vistas
Estoy tratando de devolver solo elementos en una matriz que contienen una clave coincidente con un valor verdadero donde la clave proviene de una matriz separada

Breve ejemplo:

pieza de estado: ['youth', 'college'];

Objeto de evento:

 { name: theEvent, ageDivisions: { youth: true, middleSchool: true, highSchool: true, college: true open: false }, }

lo que quiero lograr

Quiero filtrar a través de múltiples objetos de eventos y solo regresar cuando el evento al menos contiene todas las cadenas coincidentes en la matriz de estado. esta matriz se crea en función de lo que el usuario selecciona del formulario (imagen a continuación)

Formulario que llena el usuario

Mi enfoque hasta ahora:

Hasta ahora, mi enfoque ha sido convertir el parámetro de divisiones de edad de los eventos en una matriz de matrices que contienen la clave y el valor. Posiciones 1 y 2 respectivamente

Aquí está el código:

códigoPenLink

 if (filterParamaters.ageDivisions !== undefined && filterParamaters.ageDivisions.length != false) { let parsedEvents = events.data.map(({ attributes: event }) => { return { ...event, ...event.attributes, ageDivisions: JSON.parse(event.ageDivisions), eventStyles: JSON.parse(event.eventStyles), } }) console.log({ parsedEvents }); filteredEventss = parsedEvents.filter((event) => { // make event .attributes.ageDivisions object an array of key value pairs console.log({ eventThatWeAreFiltering: event }); if ((event.ageDivisions !== undefined && event.ageDivisions !== null)) { let eventAgeDivisions = Object.entries(event.ageDivisions); console.log({ theAgifiedObject: eventAgeDivisions }); // This maps through each object in the Object key value pair Array // It might be easier to use map and just chang the array to only have the matching values let onlyTrueEventAgedivisions = eventAgeDivisions.map((ageDivision, index) => { console.log({ theAgeDivision: ageDivision[2] }); if (ageDivision[2] === true) { return [ageDivision[0], ageDivision[2]]; } else { return false; } }) console.log({ theTrueEventAgedivisions: onlyTrueEventAgedivisions }); } }) console.log({ theFinishedFilteredevents: filteredEventss }); }
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo que hice fue verificar si ageDivisions existía en cada objeto y, si es así, ejecutar esta lista filterParameters.ageDivisions , verificando si todas las propiedades que desea que sean verdaderas están configuradas como verdaderas.

 const result = parsedEvents.filter((e) => e.ageDivisions && filterParameters.ageDivisions.every(prop => e.ageDivisions[prop])) console.log(result);
about 4 years ago · Santiago Trujillo 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