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

224
Vistas
Cambiar dinámicamente la clave en una consulta de filtro

Creé un código de filtrado simple que filtra 0 y nulos. Quizás no sea el más elegante, pero funciona:

 var data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; var filteredData = []; for (var i = 0; i < data.length; ++i) { if (data[i].location !== null && data[i].location != 0) { filteredData.push({ location: data[i].location, year: data[i].year }) } }; console.log(filteredData);

Ahora me gustaría filtrar 0 y nulos para otras claves (por ejemplo, año), ¿cómo puedo cambiar dinámicamente la clave?

Mi pensamiento (quizás ingenuo) fue crear una variable que indicara la clave que quiero filtrar

Desafortunadamente eso no funcionó. ¿Alguien tiene una sugerencia o me ayuda en la dirección correcta?

 var var1 = 'year'; var data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; var filteredData = []; for (var i = 0; i < data.length; ++i) { if (data[i].var1 !== null && data[i].var1 != 0) { filteredData.push({ location: data[i].location, year: data[i].year }) } }; console.log(filteredData)

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

0

Su problema es que necesita usar la notación de corchetes en lugar de la notación de puntos para las claves variables.

Dicho esto, JavaScript tiene un método de filtro de matriz

Luego puede usar cada para tener claves dinámicas en una matriz:

 const data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; const notZero = ["location","year"] const filteredData = data.filter(item => notZero.every(key => item[key] !== 0)) console.log(filteredData)

about 4 years ago · Juan Pablo Isaza Denunciar

0

en lugar de data[i].var1 intente data[i][var1] . los corchetes le permiten tener una clave dinámica.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si puede tener 0 o nulo en sus datos, debe hacer esto:

 const data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; const filteredData = data.filter(item => !Object.values(item).filter(value => !value).length)

Esto le permite verificar dinámicamente todos los valores dentro de un objeto y verificar si todos ellos son valores verdaderos, capturando así todos los valores falsos.

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