• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

157
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;
almost 3 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.

almost 3 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))

almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda