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

80
Views
Formato de matriz de objetos

Tengo esta matriz de objetos (datos). Estos son los primeros en indexar:

 0: Object granularity_time: "total" granularity_geo: "nation" location_code: "norge" border: "2020" age: "90+" sex: "female" year: "1900" week: "1" yrwk: "1900-01" season: "1899/1900" x: "24" date: "1900-01-01" n: "219" date_of_publishing: "2022-01-12" tag_outcome: "death" 1: Object granularity_time: "total" granularity_geo: "nation" location_code: "norge" border: "2020" age: "90+" sex: "male" year: "1900" week: "1" yrwk: "1900-01" season: "1899/1900" x: "24" date: "1900-01-01" n: "127" date_of_publishing: "2022-01-12" tag_outcome: "death"

Sus estadísticas donde hombres y mujeres en la misma edad tienen su propio objeto. El índice 0 es para mujeres mayores de 90 años, el índice 1 para hombres mayores de 90 años. El índice 2 es para mujeres mayores de 80 años, el índice 3 es para hombres mayores de 80 años, etc.

Quiero formatear los datos para que cada índice contenga dos objetos, para hombres y mujeres de la misma edad.

Algo como esto:

 const newData = [ { woman: data[0], men: data[1] }, { woman: data[2], men: data[3] }, { woman: data[4], men: data[5] }, { woman: data[6], men: data[7] }, { woman: data[8], men: data[9] }, { woman: data[10], men: data[11] }, { woman: data[12], men: data[13] } ];

Intenté hacer una función que repita los datos, pero cada entrada termina sin definirse:

 const formatData = (data) => { const newData = []; data?.map((item, i) => { i % 2 === 0 ? newData.push({ woman: item[i], men: item[i++] }) : null; }); return newData; };

¿Que me estoy perdiendo aqui?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Esto realmente funciona, pero no estoy seguro de si es la mejor práctica, ya que solo estoy usando el mapa para obtener i..

 const formatData = (data) => { const newData = []; data?.map((item, i) => { i % 2 === 0 ? newData.push({ woman: data[i], men: data[i + 1] }) : null; }); return newData;

};

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar Array.from() y Array.map() para crear la salida deseada a partir de su matriz de datos original.

La longitud de la nueva matriz será data.length / 2, y cada elemento alternativo se asignará a la propiedad de hombre o mujer de cada elemento en la matriz de salida.

 const template = { year: 1900, location_code: 'norge' }; // Some array of input data... const data = Array.from({length: 14}, (v,k) => ({...template, id: k, gender: ( k % 2 === 0 ? 'female':'male' )})); const result = Array.from( { length: data.length / 2 }, (v, idx) => { return { women: data[2*idx], men: data[2*idx + 1], }; }) console.log(result)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Dado que la salida es la mitad de la entrada, en realidad es más una reducción()...

 const data = [{ gender: "m", name: "sam" }, { gender: "f", name: "sally" }, { gender: "m", name: "allen" }, { gender: "f", name: "abby" }, { gender: "m", name: "jim" }, { gender: "f", name: "jill" }]; const newData = data.reduce((acc, obj, i) => { i % 2 ? acc[acc.length-1].woman = obj : acc.push({ man: obj }) return acc; }, []); console.log(newData)

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!