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

71
Vistas
matriz de mapas de objetos basada en un conjunto de propiedades

Supongamos que tengo un objeto:

 let array = [ {a: 1, b: 5, c: 9}, {a: 2, b: 6, c: 10}, {a: 3, b: 7, c: 11}, {a: 4, b: 8, c: 12} ];

entonces tengo un diccionario:

 const columns = [ { key: 'a', value: 'a' }, { key: 'b', value: 'b' }, ]

Quiero filtrar las propiedades que no están definidas en las columnas.

Yo he tratado

 array.map((x) => ({"a": xa, "b": xb}))

¿Hay alguna forma de usar los datos definidos en las columnas en lugar de escribir manualmente todas las propiedades?

Salida deseada:

 [ { "a": 1, "b": 5 }, { "a": 2, "b": 6 }, { "a": 3, "b": 7 }, { "a": 4, "b": 8 } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede asignar entradas y obtener los nuevos objetos.

 let array = [{ a: 1, b: 5, c: 9 }, { a: 2, b: 6, c: 10 }, { a: 3, b: 7, c: 11 }, { a: 4, b: 8, c: 12 }], columns = [{ key: 'a', value: 'a' }, { key: 'b', value: 'b' }], keys = columns.map(({ key }) => key), result = array.map(o => Object.fromEntries(keys.map(k => [k, o[k]]))); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías usar esto.

Esto usa solo una matriz para contener las columnas deseadas porque no entiendo por qué usaría un diccionario con la clave y el valor iguales.

 let array = [ { a: 1, b: 5, c: 9 }, { a: 2, b: 6, c: 10 }, { a: 3, b: 7, c: 11 }, { a: 4, b: 8, c: 12 }, ]; const desiredColumns = ["a", "b"]; const transformed = array.map(item => { const obj = {}; desiredColumns.forEach(col => { if(col in item){ obj[col] = item[col]; } }) return obj; }) console.log(array); console.log(transformed)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Otra forma un poco menos directa de usar map() y reduce() :

  1. Crea una matriz con todas las claves que mantendremos.
  2. Reducir la array para obtener el resultado deseado
    • Agregue la clave actual + valor si la clave keep la matriz

 const array = [{a: 1, b: 5, c: 9}, {a: 2, b: 6, c: 10}, {a: 3, b: 7, c: 11}, {a: 4, b: 8, c: 12} ]; const columns = [{ key: 'a', value: 'a' }, { key: 'b', value: 'b' }, ]; const toKeep = columns.map(({ key }) => key).flat(); const result = array.map(a => Object.keys(a) .reduce((prev, cur) => (toKeep.includes(cur)) ? { ...prev, [cur]: a[cur] } : prev, {}) ); console.log(result);

Resultado:

 [ { "a": 1, "b": 5 }, { "a": 2, "b": 6 }, { "a": 3, "b": 7 }, { "a": 4, "b": 8 } ]
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