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

124
Vistas
Excluir la lista de objetos enumerados en la variable del filtro

Estoy trabajando con datos JSON y filtro algunos de los datos usando .filter, quiero que excluya algunas categorías y algunos productos, lo que puedo hacer fácilmente especificando individualmente en mi retorno de filtro, pero creo que la lista es larga y no parece factible tal como es.

Creo que no tengo que agregar el JSON de ejemplo aquí, solo imagina que tiene "categoría" y "producto" para cada dato. Echa un vistazo a cómo proceso los datos:

 var myfilter = myjson.filter(function(c) { return (c.category != 3 && c.category!= 5 && c.category!= 8 && c.category!= 11 && c.product != 191 && c.product != 139 && c.product != "string instead of int"); });

^ Esto de arriba ya hace lo que necesito. Lo que deseo es convertirlo en algo como esto:

 var excludedcats = [3, 5, 8, 11] var excludedproducts = [191, 139, "string instead of int"] var myfilter = myjson.filter(function(c) { return (c.category != excludedcats && c.product != excludedproducts); });

No soy un profesional de javascript, pero siento que esto funciona como condiciones 'si' y tiene que seguir repitiendo c.category != y c.product != para cada uno, así que pensé en algún tipo de bucle hasta que especifique todo de ellos. Pero yo también podría estar totalmente perdido.

Ya investigué un poco, pero podría ser que, como ni siquiera conozco todos los términos técnicos, no haya encontrado lo que estoy buscando. Lo más relevante que pude encontrar fue esto , no me ayudó, solo agregué aquí para probar que investigué 😅

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

0

Aquí hay una versión un poco más genérica.

 var myjson = [{ category: 4, product: "string instead of int" }, { category: 3, product: 0 }, { category: 2, product: "should keep" } ]; var exclusions = { category: [3, 5, 8, 11], product: [191, 139, "string instead of int"] } var myfilter = myjson.filter(function(c) { for (var key in exclusions) { for (var i = 0; i < exclusions[key].length; i++) { if (c[key] == exclusions[key][i]) { return false; } } } return true; }); console.log(myfilter)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que puedes aprovechar el método includes :

 var myfilter = myjson.filter(function(c) { return !excludedcats.includes(c.category) && !excludedproducts.includes(c.product); //return (c.category != excludedcats && c.product != excludedproducts); });

Más sobre eso aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

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