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

151
Vistas
Matriz unidimensional de Javascript de objeto "como" Filtro

Tengo una matriz unidimensional de objetos como este:

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", }, { "empId": 63759, "empCode": "000003B", "empName": "Paul John", }, { "empId": 63760, "empCode": "000003C", "empName": "Chris John", }, ];

Quiero filtrar los datos de la misma manera que cuando usamos en la consulta sql "como '% john %'", y deseo que también pueda obtener texto que no distinga entre mayúsculas y minúsculas. por lo que dará salida:

 var data = [= { "empId": 63759, "empCode": "000003B", "empName": "Paul John", }, { "empId": 63760, "empCode": "000003C", "empName": "Chris John", }, ];

Ya intenté esto, pero el resultado es solo aceptar el parámetro de texto completo como "Chris John"

 var filter = { "empName": "Chris John" } data = data.filter(function(item){ for(var key in filter){ if(item[key] == undefined || item[key] != filter[key]) return false } return true });

por favor ayuda, gracias

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Simplemente puede lograr esto usando String.indexOf() junto con el método Array.filter() .

Demostración en vivo :

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", },{ "empId": 63759, "empCode": "000003B", "empName": "Paul John", },{ "empId": 63760, "empCode": "000003C", "empName": "Chris John", } ]; const filter = { "empName": "john" }; let res = data.filter(({ empName }) => empName.toLowerCase().indexOf(filter.empName) !== -1); console.log(res);

about 4 years ago · Santiago Trujillo Denunciar

0

Puede escribir otro método de utilidad para verificar los valores de la subcadena como se muestra a continuación:

 var data = [ { empId: 63758, empCode: "000003A", empName: "Robert", }, { empId: 63759, empCode: "000003B", empName: "Paul John", }, { empId: 63760, empCode: "000003C", empName: "Chris John", }, ]; var filter = { empName: "joh", }; const checkLikeValue = (a, b) => { if(a === b) { return true } else if (typeof a === "string") { const substrings = a.split(" "); return substrings.some(str => b.toLowerCase().includes(str)) } return false } data = data.filter(function (item) { for (var key in filter) { if (item[key] == undefined || !checkLikeValue(filter[key], item[key])) return false; } return true; }); console.log(data);

about 4 years ago · Santiago Trujillo Denunciar

0

Esto se puede lograr usando include( includes() así como indexOf() (según la respuesta dada por @Rohit Jindal).

Otro enfoque sería usar includes .

 var data = [ { "empId": 63758, "empCode": "000003A", "empName": "Robert", },{ "empId": 63759, "empCode": "000003B", "empName": "Paul John", },{ "empId": 63760, "empCode": "000003C", "empName": "Chris John", } ]; const filter = { "empName": "john" }; let res = data.filter(({ empName }) => empName.toLowerCase().includes(filter.empName)); console.log(res);

La única diferencia sería una verificación adicional del valor de retorno de indexOf() que no es necesario cuando se usa include( includes() . En cuanto al rendimiento, ambos relojes son casi iguales.

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