Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
¿Cómo convertir valores de ciertas claves de una matriz a números?

Tengo la siguiente matriz de objetos.

 const mi_array = [{ agrupacion: "Total país", col2015: '81.8', col2016: '86.4', col2017: '67.3', col2018: '70.8', col2019: '67.6' },{ agrupacion: "otra cosa", col2015: '90.8', col2016: '67.4', col2017: '39.3', col2018: '50.8', col2019: '95.6' }];

Necesito transformar esto en algo como esto:

 const new_array = [{ name: "Total país", data: [81.8, 86.4, 67.3, 70.8, 67.6] }, { name: "otra cosa", data: [90.8, 67.4, 39.3, 50.8, 95.6] }];

Intenté esto, pero dado que los valores en las claves col2015 a 2019 son todas cadenas, no funciona según lo previsto

 const result = mi_array.map(e => ({ name: e.agrupacion, data: Object.values(e).filter(e => typeof e == 'number') })) console.log(result)

producción:

 [{ data: [], name: "Total país" }, { data: [], name: "otra cosa" }]

Sé que funcionará si puedo transformar esos valores en números de alguna manera, así que traté de lograrlo con esto:

 for(let key of Object.keys(mi_array)) mi_array[key] = +mi_array[key] console.log(mi_array);

sin embargo, mi salida es:

 [NaN, NaN]

otro intento:

 var result = Object.keys(mi_array).map(function(key) { return [Number(key), mi_array[key]]; }); console.log(result);

otra salida fallida:

 [[0, { agrupacion: "Total país", col2015: "81.8", col2016: "86.4", col2017: "67.3", col2018: "70.8", col2019: "67.6" }], [1, { agrupacion: "otra cosa", col2015: "90.8", col2016: "67.4", col2017: "39.3", col2018: "50.8", col2019: "95.6" }]]

¿Hay una manera eficiente de hacer esto?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Podría desestructurar name y tomar del resto solo los valores como data , después de mapear con Number .

Este enfoque toma el orden original del objeto.

 const mi_array = [{ agrupacion: "Total país", col2015: '81.8', col2016: '86.4', col2017: '67.3', col2018: '70.8', col2019: '67.6' }, { agrupacion: "otra cosa", col2015: '90.8', col2016: '67.4', col2017: '39.3', col2018: '50.8', col2019: '95.6' }], result = mi_array.map(({ agrupacion: name, ...o }) => ({ name, data: Object.values(o).map(Number) })); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

const new_array = []; for(let i = 0; i < mi_array.length; ++i) { const new_obj = {"name":"", "data":[]}; for(const key in mi_array[i]) { const num = Number(mi_array[i][key]); if(isNaN(num)) { new_obj.name = mi_array[i][key]; } else { new_obj.data.push(num); } } new_array.push(new_obj); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías usarlo.

Primero, mapee la matriz y tome las propiedades agrupacion y rest props for map in data y convierta a Number .

 const newArr = mi_array.map(({agrupacion, ...props})=> ({ name:agrupacion, data: [...Object.values(props).map(value => Number(value))] }))
about 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda