Javascript-拆分数组我正在循环而不改变循环数组

时间:2017-08-20 06:36:58

标签: javascript arrays html5 loops reference

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,因为它们都引用了相同的数组。但是,我再次不完全理解为什么会发生这种情况或知道如何防止它。

基本上,我需要使用我正在循环的同一个数组,而不需要更改或更改原始数组。我认为制作一个新变量足以实现这一点,但我猜不是。因为我对一个变量所做的一切似乎都会影响另一个变量。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你有两个嵌套for循环,这是好的,但是你不能对它们使用相同的变量i。在内部循环中,您正在重新定义外部循环的i变量,这当然会混淆外部循环的顺序。

解决方案很简单:在内循环中使用不同的变量名,例如i2 oder ii。