Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

77
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda