JavaScript For Loop保持循环无限
JavaScript For Loop Keeps Looping Infinity
我编写了下面的函数,作为通过web界面处理FASTA格式文件的更大应用程序的一部分。出于某种原因,当从makePretty()中调用我的baseCounts()函数时,它决定运行到无穷大。可能值得注意的是,这两个函数都由同一个父函数封装。
函数baseCounts()以100多个长数组的形式返回有效数据,console.log确认这不是罪魁祸首,所以问题出在makePretty()上。
欢迎任何帮助。
function baseCount(records){
// Count instances of Bases in array
var basecounts = Array();
for (i=0; i < records.length; i++){
var record = records[i];
console.log(record);
var count = [record.match(/A/g), record.match(/T/g), record.match(/C/g), record.match(/G/g)];
var basecount = Array();
for (i=0; i < count.length; i++){
basecount.push(count[i].length);
}
// return array of occurance
basecounts.push(basecount);
}
}
function makePretty(fasta){
// Make FASTA more human friendly
var data = Array();
var basecounts = Array();
var bases = Array();
console.log(fasta.length);
// Generate base array
for (i=1; i < fasta.length; i++){
bases.push(fasta[i][2])
}
basecounts = baseCount(bases); // RUNS INTO INFINITY
for (i=0; i < fasta.length; i++){
var record = Array();
record.push(i); // Add protein number
record.push(fasta[i][0]); // Add NC_#
record.push(fasta[i][1]); // Add base index
_record = fasta[i][2];
var l_record = _fasta.length; // Protein length
//var basecount = baseCount(_record);
var cg_content;
}
}
您的嵌套循环使用相同的变量i
,并破坏彼此的状态。
for (i=0; i < records.length; i++){
...
for (i=0; i < count.length; i++){
...
}
使用不同的变量,比如i
和j
,或者更好地选择有意义的名称。
此外,您还应该声明变量(var i
),以确保它们是函数的本地变量。
最后,使用++i
,而不是i++
。前者的意思是"增加i",而后者的意思是是"i,顺便说一下,哦,增加它"。它们都递增i
,但后者返回旧值,这是在特殊情况下使用的一种特殊语言功能。
您正在内部循环(i)中重新设置变量计数器。
为了避免这种情况,以及未来类似的问题以及吊装问题,我建议使用更新的功能,如forEach或map。你也可以这样清理你的代码:
function baseCountFunc(records){
// Count instances of Bases in array
var basecount = [];
records.forEach(function(record) {
var count = [record.match(/A/g), record.match(/T/g), record.match(/C/g), record.match(/G/g)];
count.forEach(function(countElement) {
basecount.push(countElement.length);
});
basecounts.push(basecount);
});
}
此外,我注意到您将函数命名为与变量相同的名称,您也应该避免这样做。
相关文章:
- 使用滚动溢出-x进行无限循环
- 超过了最大调用堆栈大小,循环无限
- 无限的java脚本循环
- 从index.html调用函数,该函数无限循环
- 为什么我使用javascript获得了一个无限的for循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- 如何在不进入无限循环的情况下将网站重定向到Facebook画布URL
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- jQuery无限循环,动画化许多项目
- 如何避免试图用php+jquery显示php起始页的无限循环
- 6502仿真增强型基本无限循环$C000至$E0ED
- Angular ngRoute导致无限循环和堆栈溢出
- Jquery:无限循环和暂停
- 数组数组:无限循环
- 为什么while循环无限循环
- 为什么我的代码循环无限提交而不回显$post-nametest_value
- 简单的 do/while 循环无限循环问题
- JavaScript For Loop保持循环无限
- 为什么这个javascript循环无限返回