var arrayLength = splitData.length;
for(var i=0; i<arrayLength; i++){
if(splitData[i]== '----------------\r\n#NOTES:\r\n'){
console.log("Notes section found...");
noteSection = true;
}
else if(i==1){
var tempArray = splitData[i];
var titleData = tempArray;
titleBox = titleData.split("\r\n");
for(var i=0; i<titleBox.length; i++){
var bpmBox = titleBox[i];
if(bpmBox.indexOf("BPMS") >= 0){
var bpmBoxSplit = bpmBox.split("=");
BPM = parseInt(bpmBoxSplit[1]);
console.log("BPM found: " + BPM);
}
}
}
所以我有一个数组和一个for循环遍历数组,搜索特定的字符串:
'----------------\r\n#NOTES:\r\n'
但由于某种原因,我的else if语句中有一些代码正在改变arrayLength,并导致我的循环直接跳过我需要的字符串。
var titleData = splitData[i];
titleBox = titleData.split("\r\n");
这段代码搞砸了,我真的不明白为什么或如何解决它。我假设当我执行titleData.split(“\ r \ n”)时它正在搞乱arrayLength,因为它们都引用了相同的数组。但是,我再次不完全理解为什么会发生这种情况或知道如何防止它。
基本上,我需要使用我正在循环的同一个数组,而不需要更改或更改原始数组。我认为制作一个新变量足以实现这一点,但我猜不是。因为我对一个变量所做的一切似乎都会影响另一个变量。
非常感谢任何帮助。
答案 0 :(得分:1)
你有两个嵌套for循环,这是好的,但是你不能对它们使用相同的变量i。在内部循环中,您正在重新定义外部循环的i变量,这当然会混淆外部循环的顺序。
解决方案很简单:在内循环中使用不同的变量名,例如i2 oder ii。