【发布时间】:2017-08-20 06:36:57
【问题描述】:
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);
}
}
}
所以我有一个数组和一个循环遍历数组,搜索特定字符串:
'----------------\r\n#NOTES:\r\n'
但由于某种原因,我的 else if 语句中有一些代码会改变 arrayLength,并导致我的循环直接跳过我需要的字符串。
var titleData = splitData[i];
titleBox = titleData.split("\r\n");
这段代码把事情搞砸了,我真的不明白为什么或如何解决它。我假设当我执行 titleData.split("\r\n") 时它与 arrayLength 混淆,因为它们都引用同一个数组。但我再次不完全理解为什么会发生这种情况,也不知道如何预防。
基本上,我需要使用我当前循环通过的同一个数组,而不更改或更改原始数组。我认为制作一个新变量足以完成此任务,但我想不是。因为我对一个变量所做的任何事情似乎都会影响另一个变量。
任何帮助将不胜感激。
【问题讨论】:
-
因为您在两个 for 循环中使用相同的计数器变量名称
i,所以在其中一个循环中使用不同的计数器变量名称。或者使用let而不是var定义它们以使它们成为块范围,尽管我仍然会使用不同的名称来防止混淆
标签: javascript arrays html loops reference