En el código a continuación, aplico el filtro en la matriz en función de otras matrices. Por ejemplo: filtre la matriz de data en función de los nombres de propiedad de las cols y los valores de la matriz de values .
const data = [{ name: "Tiger Nixon", position: "Accountant", salary: 10800, start_date: "2011\\/04\\/25", office: "Edinburgh", rating: 5421 }, { name: "Garrett Winters", position: "Accountant", salary: 170750, start_date: "2011\\/07\\/25", office: "Tokyo", rating: 8422 }, { name: "Garrett Winters", position: "Analyst", salary: 170750, start_date: "2011\\/07\\/25", office: "Tokyo", rating: 8422 }, { name: "Ashton Cox", position: "Junior Technical Author", salary: 86000, start_date: "2009\\/01\\/12", office: "San Francisco", rating: 1562 }, { name: "Cedric Kelly", position: "Senior Javascript Developer", salary: 433060, start_date: "2012\\/03\\/29", office: "Edinburgh", rating: 6224 }], cols = ['name', 'position'], values = ['Garrett Winters', 'Accountant'], result = data.filter(o => cols.every((k, i) => o[k] === values[i])); console.log(result); El código anterior está funcionando bien. Pero si tengo una matriz anidada para values numéricos (ver más abajo). Quiero acomodar esta condición salary >= nestedarray[0] && salary <= nestedarray[1]
cols = ['salary', 'position'] values = [[50000,500000], 'Accountant']Intenté esto pero no funcionó -
result = data.filter(o => cols.every((k, i) => if(Array.isArray(values[i]) {o[k] >= values[i][0] && o[k] <= values[i][1] } else {o[k] === values[i]}))Tienes que usar el operador ternario para realizar un condicional en una expresión, no if .
result = data.filter(o => cols.every((k, i) => Array.isArray(values[i]) ? o[k] >= values[i][0] && o[k] <= values[i][1] : o[k] === values[i] ));