2016-10-01 3 views
1

Я пытаюсь преобразовать этот массив строк (которые являются целыми) в массив чисел. По какой-то причине, когда я использую следующую функцию, она не меняет первую строку в массиве на число. Я не знаю, почему. Может кто-нибудь объяснить это мне?Преобразование массива строк в числа

var listArray = ['7', '4', '2', '12', '9']; 
function makeNums(){ 
    for(var i = 0; i < listArray.length; i++){ 
    listArray[i] = parseInt(listArray[i], 10); 
    listArray.sort(function(a,b) { return a - b; }); 
    console.log(listArray[i]); 
    } 

} 

makeNums(); 
+2

Сортировка После включения строки в целые числа не во время преобразования. Он пытается отсортировать строки и числа прямо сейчас :(Он перемещает строки вокруг так, что вы не можете преобразовать их все в целые числа. – ahitt6345

+0

Почему бы вам просто не сделать 'listArray.map (function (num) {return 1 * num}) sort (function (a, b) {return a - b;}) ' – androidavid

+1

Почему вы пытаетесь сортировать внутри цикла? –

ответ

2

Переместить сортировку за пределы итерации. Таким образом, он не будет сортироваться, пока массив не будет обработан. Попробуйте выполнить фрагмент кода ниже:

var listArray = ['7', '4', '2', '12', '9']; 
 
function makeNums(){ 
 
    for(var i = 0; i < listArray.length; i++){ 
 
    listArray[i] = parseInt(listArray[i], 10); 
 
    } 
 
    listArray.sort(function(a,b) { return a - b; }); 
 
    console.log(listArray); 
 
} 
 

 
makeNums();

+0

Это правильный ответ. – ahitt6345

+0

Я не могу использовать метод карты, и этот ответ сделал то, что мне нужно для большей проблемы, над которой я работаю. Спасибо за освещение! –

4

Вы можете преобразовать его в номер с Number как обратный вызов, а затем отсортировать.

var listArray = ['7', '4', '2', '12', '9'].map(Number); 
 
console.log(listArray); 
 
listArray.sort(function (a,b) { return a-b; }); 
 
console.log(listArray);

Или вы можете сортировать, из-за неявной на номер, а затем преобразовать элементы на номер.

var listArray = ['7', '4', '2', '12', '9']; 
 
listArray.sort(function (a,b) { return a-b; }); 
 
console.log(listArray); 
 
listArray = listArray.map(Number); 
 
console.log(listArray);

+0

Это работало в консоли, но не давало остальная часть проблемы, над которой я работаю. Это отличный ответ. Спасибо, Нина! –

Смежные вопросы