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

195
Views
¿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 answers
Answer question

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 Report

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 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!