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

223
Vistas
Cómo crear una nueva matriz de objetos a partir de una matriz de objetos existente, filtrada para que coincida con una lista de claves

Tengo una matriz de objetos, ejemplo:

 [ { "fName": "Jon", "lName": "Doe", "age": "30", "shirtSize": "M" }, { "fName": "Jane", "lName": "Foe", "age": "25", "shirtSize": "M" }, ... ]

También tengo una lista de claves, ejemplo:

 ["age", "shirtSize"]

Quiero tomar la matriz de objetos y crear una nueva matriz de objetos que coincida con la matriz de la lista de claves, filtrando efectivamente la matriz de objetos para tener solo los pares clave/valor que quiero. Los anteriores son ejemplos, y los conjuntos de datos reales son, por supuesto, más detallados. Lo he forzado bruscamente en mi algoritmo a continuación y, como era de esperar, no es muy eficaz en absoluto, como resultado de mi bucle dentro del mapa. Mi resultado es como:

 [ { "age": "30", "shirtSize": "M" }, { "age": "25", "shirtSize": "M" }, ... ]

No estoy usando nada como lodash. ¿Cómo puedo mejorar este rendimiento?

 const data = [ { "fName": "Jon", "lName": "Doe", "age": "30", "shirtSize": "M" }, { "fName": "Jane", "lName": "Foe", "age": "25", "shirtSize": "M" } ]; const keyList = ["age", "shirtSize"]; const filteredDataset = data.map((elem) => { let tempHolder = {}; for (let key of keyList) { tempHolder[key] = elem[key]; } return tempHolder; }); return filteredDataset;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

var results = []; for(var person of data){ var obj = {}; for(var key of keyList){ obj[key] = person[key]; } results.push(obj); }

El primer ciclo itera a través de los datos, y el ciclo interno itera a través de keyList y agrega esos atributos al objeto temporal, que luego se envía a la matriz de resultados.

EDITAR: Su código es básicamente el mismo, con el suyo solo usando el mapa para iterar en lugar de un bucle for...of.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede expresar el mismo algoritmo de forma más declarativa:

 const select = (props) => (objs) => objs .map (o => Object .fromEntries (props .map (p => [p, o[p]]))) const items = [{fName: "Jon", lName: "Doe", age: "30", shirtSize: "M"}, {fName: "Jane", lName: "Foe", age: "25", shirtSize: "M"}] console .log (select (["age", "shirtSize"]) (items))

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