我正在尝试将字符串数组转换为javascript中的整数数组。我在这里和其他几个来源的线程中看到了以下解决方案,所以我说它必须是正确的,但是当我进入转换时浏览器崩溃了。我尝试过使用Chromium和Firefox。 这是源代码,我对导致这个问题以及可以解决的问题感兴趣:
var str = "1,2,3,3,4,5,6";
var arr1 = str.split(",");
console.log(arr1);
for(var k=0; k<=arr1.length; k++) { arr1[k] = +arr1[k]; }
答案 0 :(得分:1)
除了给定的答案,您可能还想使用此oneliner来创建数组:
var arr1 = '1,2,3,4,5,6,7'.split(',').map(function(a){return +a;});
Array.map
的答案 1 :(得分:0)
问题在于此表达式
k<=arr1.length
当k
为6
时,k++
会增加k
,并且会变为7
。然后k <= arr1.length
为真,因为arr1.length
为7.下一个陈述是
arr1[k] = +arr1[k];
在索引7处的数组中创建一个新元素。因此数组保持无限增长。你应该做的是
var arr1 = "1,2,3,3,4,5,6".split(",");
for (var k = 0; k < arr1.length; k++) {
arr1[k] = +arr1[k];
}
console.log(arr1);
# [ 1, 2, 3, 3, 4, 5, 6 ]
仅迭代计数器小于数组的长度。否则将数组的长度存储在一个临时变量中,如
for (var k = 0, len = arr1.length; k < len; k++) {
arr1[k] = +arr1[k];
}
您可以编写相同的内容,只需
console.log("1,2,3,3,4,5,6".split(",").map(Number));
# [ 1, 2, 3, 3, 4, 5, 6 ]