Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 如何使用更新的变量停止递归和/或重新启动当前函数_Javascript_Recursion - Fatal编程技术网

Javascript 如何使用更新的变量停止递归和/或重新启动当前函数

Javascript 如何使用更新的变量停止递归和/或重新启动当前函数,javascript,recursion,Javascript,Recursion,我有两个数组,它们根据标准更新自身和彼此(描述的时间比我猜想的解决方案要长得多) 我最终得到的是一个在while循环中调用自身的函数。可以想象,这会导致大量的递归 下面是一个例子(保持简短) var buildArray=firstFunction(新数组(),现有数组) function firstFunction(thisArray,existingArray){ 对于(test1=0;test1我不知道您要做什么,但是基于return停止第二个函数中的执行,并且这个数组从未更改, 您可以向

我有两个数组,它们根据标准更新自身和彼此(描述的时间比我猜想的解决方案要长得多)

我最终得到的是一个在while循环中调用自身的函数。可以想象,这会导致大量的递归

下面是一个例子(保持简短)

var buildArray=firstFunction(新数组(),现有数组) function firstFunction(thisArray,existingArray){
对于(test1=0;test1我不知道您要做什么,但是基于return停止第二个函数中的执行,并且这个数组从未更改, 您可以向firstFunction添加循环:

function firstFunction(thisArray, existingArray){
    var restart = true;
    while(restart)
    {
        restart = false;
         for(test1=0; !restart && test1<existingArray.length; test1++){
             if(existingArray[test1][3]=='2'){
               if(secondFunction(thisArray, existingArray, test1))
               {
                restart = true;
               }
            }
         }
    }
function firstFunction(thisArray,existingArray){
var重启=真;
while(重启)
{
重新启动=错误;

对于(test1=0;!restart&&test1我不知道您要做什么,但是基于return停止第二个函数中的执行,并且这个数组从未更改, 您可以向firstFunction添加循环:

function firstFunction(thisArray, existingArray){
    var restart = true;
    while(restart)
    {
        restart = false;
         for(test1=0; !restart && test1<existingArray.length; test1++){
             if(existingArray[test1][3]=='2'){
               if(secondFunction(thisArray, existingArray, test1))
               {
                restart = true;
               }
            }
         }
    }
function firstFunction(thisArray,existingArray){
var重启=真;
while(重启)
{
重新启动=错误;
对于(test1=0;!重新启动&&test1我注意到了一些事情:

  • secondFunction()
    中,您可以访问
    test1
    ,即使您有一个参数
    t1
  • secondFunction()
    的第二次调用不包含最后一个参数
  • secondFunction()
    的第二次调用之前没有返回,即使您在OP中提到了它
  • 如果(jQuery.inArray(check,thisArray=-1){
,缺少一个“),则有一行
else”
  • 如果(thisArray[test1]existingArray[test2[0]){
  • 缺少一个“],则有一行
    if”
    
  • for(test1=0;test1中,我注意到了一些事情:

    • secondFunction()
      中,您可以访问
      test1
      ,即使您有一个参数
      t1
    • secondFunction()
      的第二次调用不包含最后一个参数
    • secondFunction()
      的第二次调用之前没有返回,即使您在OP中提到了它
    • 如果(jQuery.inArray(check,thisArray=-1){
    ,缺少一个“),则有一行
    else”
  • 如果(thisArray[test1]existingArray[test2[0]){
  • 缺少一个“],则有一行
    if”
    
  • 中(test1=0;test1Thanks Scrum Meister。深入了解我正在做的事情是相当令人困惑的。我不想用一堆与我遇到的困难不相关的东西来掩盖问题。这个问题是开始pointhttp://stackoverflow.com/questions/4485262/javascript-conflicting-times-in-array,然后我决定如果我在一个数组中对所有时间进行排序,然后查找冲突,根据冲突进行调整,并跟踪在单独的数组中哪些时间不可用,我可以递归地遍历它们并进行调整。我不确定您的解决方案是否有效。感谢Scrum Meister。深入了解我正在做的事情是相当令人困惑的。我没有这样做I don’我不想用一堆与我遇到的困难无关的东西来掩盖这个问题。这个问题是开始pointhttp://stackoverflow.com/questions/4485262/javascript-conflicting-times-in-array,然后我决定如果我在一个数组中对所有时间进行排序,然后查找冲突,调整到冲突和t在一个单独的数组中没有时间,我可以递归地遍历它们并进行调整。我不确定你的解决方案是否有效。对于后sjngm中的错误,我很抱歉,我从一台有代码的计算机重新键入另一台有代码堆栈的计算机。我在帖子中提到我缩短了代码,以便我知道问题出在哪里,只是没有找到解决办法。我以后会更加小心地重新键入代码,并在发布之前对代码进行测试。对于sjngm发布中的错误,我感到抱歉,我是从一台有代码的计算机重新键入到另一台有代码堆栈的计算机上的。我在文章中没有提到他在帖子中说我缩短了代码,这样就不会与其他事情混淆。我知道问题出在哪里,只是没有解决办法。我以后会更加小心地重新键入代码,并会在发布之前测试代码。
    
    function firstFunction(thisArray, existingArray){
        var restart = true;
        while(restart)
        {
            restart = false;
             for(test1=0; !restart && test1<existingArray.length; test1++){
                 if(existingArray[test1][3]=='2'){
                   if(secondFunction(thisArray, existingArray, test1))
                   {
                    restart = true;
                   }
                }
             }
        }
    
      if(thisArray[test1]<=existingArray[test2][1] || thisArray[test1]>existingArray[test2[0]){
        // do a bunch of stuff to existingArray, now that existingArray has changed, the whole process needs to start again FROM THE BEGINNING!!!
     return true;