• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

70
Views
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 }); }
over 2 years ago · Santiago Trujillo
1 answers
Answer question

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);
over 2 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error