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

189
Views
Convert array of strings to array of numbers?

I am trying to convert an array of numbers (represented as strings) to an array of numbers.

Here is an example array: [ '39.4K', '83.4K', '1.5M', '111.3K', '5878' ]; the numbers may have the conventional "K" and "M" suffixes, denoting factors of 1000 and 1000000, respectively. The desired output of the previous example is [39400, 83400, 1500000, 111300, 5878].

Here is what I have so far:

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(/(?=[A-Z])/)
        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))

I think this works, but are there any ways to improve my code? I would have assumed JS has something to automatically convert different representations of numbers. Any advice or suggestions (using only vanilla JS) greatly appreciated.

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

0

When turning one array into another by transforming each element, .map is the appropriate approach. Rather than parseFloat(sep[0]), consider destructuring the split result and conditionally multiplying with the conversions value for a more concise approach.

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(/(?=[A-Z])/);
  return numPart * (suffix ? conversions[suffix] : 1);
});

console.log(convert(sample))

about 4 years ago · Juan Pablo Isaza Report

0

You could map the results and take the unit from object or one after splitting.

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!