Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在while循环中更改数组中的值_Javascript_Loops_While Loop - Fatal编程技术网

Javascript在while循环中更改数组中的值

Javascript在while循环中更改数组中的值,javascript,loops,while-loop,Javascript,Loops,While Loop,假设我在一个数组中有数组: time = 0 arr = [[1,2,3], [4,5,6], [7,8,9]] 我尝试在每个while循环中记录arr while (time<3){ currentarr = JSON.parse(JSON.stringify(arr)) for(i=0;i<currentarr.length;i++){ for(j=0; j<currentarr[i].length; j++){ if(curr

假设我在一个数组中有数组:

time = 0
arr = [[1,2,3], [4,5,6], [7,8,9]]
我尝试在每个while循环中记录arr

while (time<3){
  currentarr = JSON.parse(JSON.stringify(arr))

  for(i=0;i<currentarr.length;i++){
      for(j=0; j<currentarr[i].length; j++){

          if(currentarr[i][j]>2){
             arr[i][j]++
          }

      }
  }
  console.log(arr)
  time++
}
而不是每次:

[[1, 2, 4],[5, 6, 7],[8, 9, 10]]  
[[1, 2, 5],[6, 7, 8],[9, 10, 11]] 
[[1, 2, 6],[7, 8, 9],[10, 11, 12]]
我刚开始学习Javascript,我不知道哪部分出错了。。。提前谢谢

1-使用它很重要;。即使您的代码在您现在正在执行的环境中工作,也有很多引擎对此不满意

2-您的while循环不会更改其中的任何迭代。如果您注意,您的时间变量在任何时候都不会被访问。它只在while循环和time++加法的条件下使用。它只作为while循环的计数器,但它不在for循环中的任何地方用作数组的索引

因此,您基本上在while循环中执行整个代码3次,每次都完全相同

3-第一行currentarr=JSON.parseJSON.stringifyarr在特定时刻创建arr变量的表示形式。然后使用这个currentarr变量在ifcurrentarr[i][j]>2{行上执行比较,但在原始arr变量上加上1:arr[i][j]+

我真的怀疑这是您真正想要的。

-1-使用它很重要。即使您的代码在您现在正在执行的环境中工作,也有很多引擎对此不满意

2-您的while循环不会更改其中的任何迭代。如果您注意,您的时间变量在任何时候都不会被访问。它仅用于while循环和time++加法的条件中。它仅用作while循环的计数器,但不会在for循环中的任何地方用作数组的索引

因此,您基本上在while循环中执行整个代码3次,每次都完全相同

3-您的第一行currentarr=JSON.parseJSON.stringifyarr在特定时刻创建您的arr变量的表示形式。然后您使用此currentarr变量在ifcurrentarr[i][j]>2{行上执行比较,但在原始arr变量上加上1:arr[i][j]+


我真的怀疑这是您真正想要的。

您的代码按预期工作。您的浏览器似乎正在实时更新日志

从:

请注意,如果您在最新版本的Chrome和Firefox中记录对象,那么您在控制台上记录的是对该对象的引用,它不一定是您调用console.log时该对象的“值”,而是您打开控制台时该对象的值

此外,从同一页:

不要使用console.logobj,请使用console.logJSON.parseJSON.stringifyobj

通过这种方式,您可以确保在记录obj时看到它的值。否则,许多浏览器会提供随值变化而不断更新的实时视图。这可能不是您想要的

这与您的问题无关,但我建议您声明变量

对于i=0;i 对于let i=0;i您的代码按预期工作。您的浏览器似乎正在实时更新日志

从:

请注意,如果您在最新版本的Chrome和Firefox中记录对象,那么您在控制台上记录的是对该对象的引用,它不一定是您调用console.log时该对象的“值”,而是您打开控制台时该对象的值

此外,从同一页:

不要使用console.logobj,请使用console.logJSON.parseJSON.stringifyobj

通过这种方式,您可以确保在记录obj时看到它的值。否则,许多浏览器会提供随值变化而不断更新的实时视图。这可能不是您想要的

这与您的问题无关,但我建议您声明变量

对于i=0;i 对于let i=0;i✊ 分号帮站起来。两组不必要的大括号,但传递了分号,tsk tsk。@Christian是的,我想提一下,但让我们放松一下,呵呵。但毫无疑问,一个更清晰的代码:永远是分号,永远不要不必要的大括号谢谢:我一定要用分号。关于第三点,这个问题中的代码没有他从我的原始代码中找到了相同的结构,太长了。JSON行的目的是创建一个深度副本。我只是想这可能会导致我的问题,所以我把它包括在那里。再次感谢!✊ 分号帮站起来。两组不必要的大括号,但传递了分号,tsk tsk。@Christian是的,我想提一下,但让我们放松一下,呵呵。但毫无疑问,一个更清晰的代码:永远是分号,永远不要不必要的大括号谢谢:我一定要用分号
奥洛斯。关于第三点,这个问题中的代码与我的原始代码的结构相同,太长了。JSON行用于创建深度副本。我只是想也许这会导致我的问题,所以我把它包括在这里。再次感谢!好问题,让我把你放到arr模式的Let项上,就个人而言,与var i=0相比,它节省了我的大脑很多时间;i[[1, 2, 4],[5, 6, 7],[8, 9, 10]] [[1, 2, 5],[6, 7, 8],[9, 10, 11]] [[1, 2, 6],[7, 8, 9],[10, 11, 12]]