Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!