从字符串到整型的数组转换会导致浏览器崩溃
Array conversion from string to int crashes the browser
我试图将字符串数组转换为javascript中的整数数组。我在这里的几个线程和其他几个来源中看到了以下解决方案,所以我认为它必须是正确的,但是当我转换到浏览器崩溃时。我尝试过chrome和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]; }
除了给定的答案,您可能还想使用这个在线程序来创建数组:
var arr1 = '1,2,3,4,5,6,7'.split(',').map(function(a){return +a;});
MDN page for Array.map
问题出在这个表达式
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 ]
相关文章:
- 为什么这会造成一个无休止的循环并使我的浏览器崩溃
- javascript audio currentTime使一些浏览器崩溃
- 在浏览器崩溃之前检测到内存耗尽
- 输入输入前浏览器崩溃
- three.js内存泄漏/浏览器崩溃
- Ajax 请求仪表板页面上的浏览器崩溃
- set超时在“while”内会导致浏览器崩溃.我怎样才能避免它
- 设置设置间隔函数正在运行并导致浏览器崩溃
- 高效的Javascript组合函数,不会使浏览器崩溃
- 我的脚本使浏览器崩溃
- SlickGrid在选择大范围的行时使浏览器崩溃
- setInterval 在运行用户脚本时使我的浏览器崩溃
- 添加依赖项后浏览器崩溃
- Javascript/Jquery代码使我的浏览器崩溃
- 无限滚动会导致浏览器崩溃吗?
- 为什么这 while 循环会使浏览器崩溃
- 设置间隔导致浏览器崩溃
- JavaScript函数使我的浏览器崩溃
- 旧的JavaScript函数使浏览器崩溃
- 如何使用 IndexedDB 制作一个很长的字符串而不会使浏览器崩溃