9

I have an array of strings like ['2', '10', '11'] and was wondering what's the most efficient way of converting it to an integer array. Should I just loop through all the elements and convert it to an integer or is there a function that does this?

0

4 Answers 4

19

Use map() and parseInt()

var res = ['2', '10', '11'].map(function(v) {
  return parseInt(v, 10);
});

document.write('<pre>' + JSON.stringify(res, null, 3) + '<pre>')

More simplified ES6 arrow function

var res = ['2', '10', '11'].map(v => parseInt(v, 10));

document.write('<pre>' + JSON.stringify(res, null, 3) + '<pre>')

Or using Number

var res = ['2', '10', '11'].map(Number);

document.write('<pre>' + JSON.stringify(res, null, 3) + '<pre>')


Or adding + symbol will be much simpler idea which parse the string

var res = ['2', '10', '11'].map(v => +v );

document.write('<pre>' + JSON.stringify(res, null, 3) + '<pre>')


FYI : As @Reddy comment - map() will not work in older browsers either you need to implement it ( Fixing JavaScript Array functions in Internet Explorer (indexOf, forEach, etc.) ) or simply use for loop and update the array.

Also there is some other method which is present in it's documentation please look at Polyfill , thanks to @RayonDabre for pointing out.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks for the suggestion! The only bad thing about this is it takes another array's worth of memory, but luckily my array isn't very big at all.
For compatibility issues, please note that Array.map() method is not available in IE8 and below
Polyfill is there..
3

You can simply use the Number object.

ḷet res = ['2', '10', '11'].map(Number);

Comments

2

You can use

var yourArray= yourArray.map(Number);

Using jQuery, you can use the map method as below

$.map(yourArray, function(value,index) { 
     return parseInt(value); 
 });

Comments

0

The simplest way to parse int from string is adding a + sign before:

var res = ['1', '2', '3'].map(function(v){return +v})

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.