【问题标题】:Javascript- Splitting an array I'm looping through without changing the loop arrayJavascript-拆分我正在循环的数组而不更改循环数组
【发布时间】: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


【解决方案1】:

你有两个嵌套的 for 循环,这没关系,但你不能对它们都使用相同的变量 i。在内循环中,您正在重新定义外循环的 i 变量,这当然会打乱外循环的顺序。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多