Buscar matriz de objetos para variable de coincidencia de entrada y comprobar si coincide con otros campos

Entonces, el progtwig está tratando de asignar un aula. Hasta ahora, el progtwig ha pedido al usuario el código de clase, el número de estudiantes y si se necesitan computadoras, y se ha creado una matriz con los campos “cRObj.name”, “cRObj.students” y cRObj.computers “(por lo tanto, El nombre del aula se incluirá en la lista debajo de cRObj.name, el número de alumnos en cRObj.students y si tiene o no computadoras (y / n) en cRObj.computers).

Tengo que buscar en la matriz de objetos para encontrar una entrada que coincida con la cantidad de estudiantes que el usuario ingresó (que creo que sé cómo hacerlo).

Sin embargo, después de eso, debe verificar que cRObj.computers sea igual a la entrada del usuario y luego guardar la entrada bajo cRObj.name si los primeros dos coinciden, de lo que no estoy seguro sobre cómo hacerlo.

Puede utilizar array.filter , esto toma una función que se pasa cada elemento de la matriz y devuelve verdadero o falso y devuelve una nueva matriz que solo tiene elementos en los que la función transferida al filtro devolverá verdadero.

Puedes aplicar parcialmente una función al curry. Ejemplo de función al curry:

const plus = a => b => a+b; const plusTen = plus(10);//is a function that takes number b and adds 10 (a is 10) const eleven = plusTen(1); takes 1 for value of b and 10 for value of a 

Aquí es cómo puede usar la función al curry para comparar:

 const equal = search => value => search === value; const isFive = equal(5); //... this will return false, search is 5 and value is 10 // 5===10 is false if(isFive(10)){ 

Proporcione una función que obtendrá una propiedad de un objeto:

 const getA = o => (o&&o.a); getA({a:10};//will return 10 getA({hasNoA:10};//will return undefined 

Combine todo para crear una función de filtro:

 const data = [ {a:3,b:2}, {a:4,b:6}, {a:5,b:8}, {a:6,b:9}, {a:7,b:3} ]; //filer function needs a getter (like getA) // comparer that is a partially applied function that takes a value and compares it // with o.something (if getter is getA it'll compare with oa) // o is the object that needs to be filtered (like elements of data: data[0]={a:3,b:2}) const filterFn = getter => comparer => o => comparer(getter(o)); //get a property const getA = o => (o&&o.a); //you can write getB I'm sure // compare search === value const equal = search => value => search === value; // compare search <= value const biggerEqual = search => value => search <= value; // all data items where item.a === 5 console.log( "a is 5", data.filter( filterFn(getA)(equal(5))//partially apply equal with search of 5 ) ); //all data items where item.a >= 5 console.log( "a equals or bigger 5", data.filter( filterFn(getA)(biggerEqual(5))//partially apply biggerEqual with search of 5 ) ); //if you want to compare b with some things you could do // const getB = o => (o&&o.b); // data // .filter(filterFn(getA)(biggerEqual(5)))//a bigger or equal 5 // .filter(filterFn(getB)(can you guess?)//b equal 5 // here is an example that takes an array of data and an array of filter functions // it'll apply filter on array of data for every function const filterData = (array, filterFunctions) => filterFunctions.reduce( (result,filterFunction)=>result.filter(filterFunction), array ); // using filterData console.log( "using filterData", filterData(data,[ filterFn(getA)(biggerEqual(5))//partially apply biggerEqual with search of 5 //,you could add more filters here ]) )