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

175
Vistas
Finding value inside an object, that's within an array

I have two arrays I want to compare. The state of each object could be either true, false or null depending on what the user has selected.
I then want to compare the two arrays, and push the name of the activity into a separate array if they match each other.
If it compares the first one for example, which would be "free", and the user has checked this, making { free: true }, then this activity ("Go to the cinema") will not be pushed into the new array.

//user input
filtersChecked: [
    { free: null },
    { indoors: null },
    { city: null },
    { winter: null },
    { physical: null },
],

//compared against:

name: "Go to the cinema",
filters: [
    { free: false },
    { indoors: true },
    { city: true },
    { winter: null },
    { physical: false },
],

What I'm struggling with is comparing the "index" of the objects state if that makes any sense...
My attempt looks like this:

function checkFilter(index, isChecked) {
    if (isChecked) {
        model.input.filtersChecked[index] = true;
    } else if (!isChecked) {
        model.input.filtersChecked[index] = false;
    }
}

function suggestActivities() {
    let userFilters = model.input.filtersChecked;
    let activityFilters;
    let tempArray = [];

    for (let i = 0; i < model.data.activities.length; i++) {
        activityFilters = model.data.activities[i].filters;
        for (let j = 0; j < userFilters.length; j++) {
            if (userFilters[j] === activityFilters[j]) {
                tempArray.push(model.data.activities[i].name);
                console.log(tempArray);
                continue;
            }
        }
    }
    console.log(tempArray);
}

I hope it's detailed enough. Been stuck on this for way too long now.
Also worth a mention that I would like it to be vanilla JavaScript, since this is a school assignment. So no jQuery please!

Thank you in advance!

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

0

Here is a sample of how you could do this comparison, with the subproblems you could break it down into. Use it as a template with how to solve your assignment's problem. Let me know if it helps.

const userInput = [
    { free: null },
    { indoors: null },
    { city: null },
    { winter: null },
    { physical: null },
 ]

const compared = {
    name: "Go to movies"
    filters: [
       { free: false },
       { indoors: true },
       { city: true },
       { winter: null },
       { physical: false },
    ]
}
const tempArr = []

function compareObjects (userInput, compared) {
    //loop through userInput filters
    for (let i=0; i<userInput.length; i++){
       //grab key from current index of array (like "free", "indoors", etc)
       let key = Object.keys(userInput[i])[0]

        //compare stored filters with user filters
        //if not equal, we can stop searching through the filters entirely and exit the function,
        // since if one of them doesnt match, we wont push at all
        //Note, I can reuse the userInput key for the compared keys, because both arrays are of equal length. 
        //If they weren't the same length, the keys wouldn't match, and you would have to sort the array first
        //so the index order and keys matched for both inputs.   
        if(userInput[i][key] !== compared.filters[i][key]) return
    }
    // if we made it through this loop without exiting the function, we can 
    // push the name since it means they all matched
    tempArr.push(compared.name)
}

//call the function and pass in variables
compareObjects(userInput, compared)
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