2016-03-03 2 views
1

У меня есть массив строк, например ['2', '10', '11'], и задавался вопросом, что является самым эффективным способом преобразования его в целочисленный массив. Должен ли я просто перебирать все элементы и преобразовывать их в целое число или есть функция, которая это делает?Преобразование строкового массива в целочисленный массив

+0

'a = a.map (Number)' – georg

ответ

2

Использование map() и parseInt()

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

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

функция более упрощенной ES6 стрелка

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

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

Или с помощью Number

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

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


Или добавления + символ будет гораздо проще идея, которая Обработать строку

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

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


FYI: Как @Reddy комментарий - map() не будет работать в старых браузерах или вы должны реализовать его ( Fixing JavaScript Array functions in Internet Explorer (indexOf, forEach, etc.)) или просто использовать цикл и обновить массив.

Также есть другой метод, который присутствует в это документации, пожалуйста, смотрите на Polyfill, благодаря @RayonDabre за указание.

+0

Спасибо за предложения Тион! Единственное плохое в этом - это память другого массива, но, к счастью, мой массив не очень большой. – MarksCode

+0

Для проблем совместимости обратите внимание, что метод Array.map() недоступен в IE8 и ниже –

+0

[_Polyfill_] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ Array/map # Polyfill) есть .. – Rayon

0

Самый простой способ разбора Int из строки добавляет знак + перед:

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

Вы можете использовать

var yourArray= yourArray.map(Number); 

Использование JQuery, вы можете использовать метод карты, как показано ниже

$.map(yourArray, function(value,index) { 
    return parseInt(value); 
}); 
Смежные вопросы