将字符串数组转换为数字

时间:2016-10-01 21:09:49

标签: javascript arrays for-loop parseint

我正在尝试将这个字符串数组(都是整数)转换为数字数组。出于某种原因,当我使用以下函数时,它不会将数组中的第一个字符串更改为数字。我不知道为什么。有人可以向我解释一下吗?

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 个答案:

答案 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);

答案 1 :(得分:2)

将排序移到迭代之外。这样它就不会排序直到数组被处理完毕。尝试运行下面的代码段:

&#13;
&#13;
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();
&#13;
&#13;
&#13;