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

135
Views
¿Cómo se agrupa uno, a partir de una lista de objetos, y se recopilan solo valores específicos a los que se hace referencia explícita, cada uno por su clave?

Tengo una estructura de datos como

 const dd = [{ keyone: "test", two: "you", three: 'op', }, { keyone: "youuuu", two: "ttt", three: 'op', }, { keyone: "operation", two: "test", three: 'op', }];

Y quiero poder sacar keyone y two en un objeto como el siguiente

 const obj = { keyone: ['test', 'youuuu', 'operation'], two: ['you', 'ttt', 'test']}

Logré esto usando dos mapas y combinándolos, pero me gustaría usar solo un bucle si es posible.

EDITAR:

Actualmente estoy usando la desestructuración para extraer valores:

 const mapOne = dd.map(({ keyone }) => keyone); const mapTwo = dd.map(({ two }) => two); const test = { keyone: mapOne, two: mapTwo, };
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puede tomar una matriz de claves y agrupar los valores.

 const data = [{ keyone: "test", two: "you", three: 'op' }, { keyone: "youuuu", two: "ttt", three: 'op' }, { keyone: "operation", two: "test", three: 'op' }], keys = ['keyone', 'two'], grouped = data.reduce((r, o) => { keys.forEach(k => (r[k] ??= []).push(o[k])); return r; }, {}); console.log(grouped);

about 4 years ago · Juan Pablo Isaza Report

0

Una función implementada genéricamente, por lo tanto, reutilizable y configurable, que hace exactamente lo que pidió el OP, estaría cerca del siguiente código de ejemplo proporcionado ...

 function groupAndCollectSpecifcEntriesOnly(collector, item) { const { keyList, result } = collector; keyList.forEach(key => { if (item.hasOwnProperty(key)) { (result[key] ??= []).push(item[key]) } }); return collector; } const sampleData = [{ keyone: "test", two: "you", three: 'op', }, { keyone: "youuuu", two: "ttt", three: 'op', }, { keyone: "operation", two: "test", three: 'op', }]; console.log( sampleData.reduce(groupAndCollectSpecifcEntriesOnly, { keyList: ['keyone', 'two'], result: {}, }).result ); console.log( sampleData.reduce(groupAndCollectSpecifcEntriesOnly, { keyList: ['three', 'keyone'], result: {}, }).result );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Puedes hacer algo como esto:

 const dd = [ { keyone: "test", two: "you", three: 'op' }, { keyone: "youuuu", two: "ttt", three: 'op' }, { keyone: "operation", two: "test", three: 'op' }]; const result = dd.reduce((prev, acc, arr ) => { if (acc['keyone']) { prev['keyone'].push(acc['keyone']) } if (acc['two']) { prev['two'].push(acc['two']) } return prev; }, {keyone: [], two: []}); console.log(result);

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!