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
Javascript: filtrar el resultado de las claves

Tengo el siguiente objeto:

 var colors = { key1:"Red", key2:"Blue", key3:"Green", key4:"Black" }

También tengo esta matriz de claves:

 var keys = ["key1","key3","key4"]

Quiero obtener los colores correspondientes de colors . Para eso, he escrito un código:

 keys.map((key)=>{ var color= colors.filter(x=>x==key); });

Pero estoy recibiendo un error aquí:

 colors.filter is not a function
about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Para extraer cada una de las claves, el map es la opción correcta, pero solo necesita obtener el valor correspondiente de los colors :

 var colors= { key1:"Red", key2:"Blue", key3:"Green", key4:"Black" }; var keys = ["key1", "key3", "key4"]; const result = keys.map(key => colors[key]); console.log(result);

Tenga en cuenta que si una clave no existe, la salida del valor es undefined . Para eliminar valores undefined , agregue .filter(Boolean) al final (gracias Roko C. Buljan ):

 const result = keys.map(key => colors[key]).filter(Boolean);

Su problema era que estaba tratando de ejecutar el filter en un objeto. filter no es un método sobre objetos, sino una matriz. Si desea usar filter , una opción es usar Object.entries así (pero la solución anterior es mucho más simple).

 var colors= { key1:"Red", key2:"Blue", key3:"Green", key4:"Black" }; var keys = ["key1", "key3", "key4"]; const result = Object.entries(colors).filter(([key, color]) => keys.includes(key)).map(([, color]) => color); console.log(result);

about 4 years ago · Santiago Gelvez Denunciar

0

Por favor intenta lo siguiente:

 var colors = { key1:"Red", key2:"Blue", key3:"Green", key4:"Black" } var keys = ["key1","key3","key4"] let a = keys.map((key)=>{ return colors[Object.keys(colors).filter(x=>x==key)]; });
about 4 years ago · Santiago Gelvez Denunciar

0

Podrías usar Array.prototype.reduce()

 const colors = { key1:"Red", key2:"Blue", key3:"Green", key4:"Black" }; const keys = ["key1", "key3", "key4", "key99"]; const result = keys.reduce((a, k) => (colors[k]&&a.push(colors[k]), a), []); console.log(result)

observe que la "key99" no se incluirá en la matriz de result

about 4 years ago · Santiago Gelvez 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