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

190
Vistas
¿Convertir una matriz de cadenas en una matriz de números?

Estoy tratando de convertir una matriz de números (representados como cadenas) en una matriz de números.

Aquí hay una matriz de ejemplo: [ '39.4K', '83.4K', '1.5M', '111.3K', '5878' ] ; los números pueden tener los sufijos convencionales "K" y "M", que denotan factores de 1000 y 1000000, respectivamente. La salida deseada del ejemplo anterior es [39400, 83400, 1500000, 111300, 5878] .

Esto es lo que tengo hasta ahora:

 var sample = [ '39.4K', '83.4K', '1.5M', '111.3K', '5878' ] function convert(arr) { var conversions = {'K':1000, 'M':1000000} var result = [] for (entry of arr) { var sep = entry.split(/(?=[AZ])/) if (sep.length == 1) { result.push(parseFloat(sep[0])) } else { var number = parseFloat(sep[0]) * conversions[sep[1]] result.push(number) } } return result } console.log(convert(sample))

Creo que esto funciona, pero ¿hay alguna forma de mejorar mi código? Habría asumido que JS tiene algo para convertir automáticamente diferentes representaciones de números. Cualquier consejo o sugerencia (usando solo Vanilla JS) es muy apreciado.

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

0

Al convertir una matriz en otra mediante la transformación de cada elemento, .map es el enfoque adecuado. En lugar de parseFloat(sep[0]) , considere desestructurar el resultado dividido y multiplicar condicionalmente con el valor de conversions para un enfoque más conciso.

 const sample = [ '39.4K', '83.4K', '1.5M', '111.3K', '5878' ] const conversions = {'K': 1e3, 'M': 1e6}; const convert = arr => arr.map((str) => { const [numPart, suffix] = str.split(/(?=[AZ])/); return numPart * (suffix ? conversions[suffix] : 1); }); console.log(convert(sample))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede mapear los resultados y tomar la unidad del objeto o uno después de dividir.

 function convert(array) { const conversions = { K: 1000, M: 1000000 }; return array.map(s => { const [v, u] = s.split(/(?=[KM]$)/); return v * (conversions[u] || 1); }); } console.log(convert(['39.4K', '83.4K', '1.5M', '111.3K', '5878']))

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