我有两个数组根据标准进行自我更新和相互更新(描述时间比我怀疑的解决方案还长)。
我最终得到的是一个在while循环内调用自身的函数。可以想象,这导致了可笑的递归量。
这是一个示例(简短说明)
var buildArray = firstFunction(new Array(),existingArray)
函数firstFunction(thisArray,existingArray){
for(test1 = 0; test1 if(existingArray [test1] [3] =='2'){
secondFunction(thisArray,existingArray,test1);
}
}
function secondFunction(thisArray,existingArray,t1){
for(test2 = 0; test2 if(thisArray [test1] existingArray [test2 [0]){
//对现存数组做一堆事情,现在现存数组已更改,整个过程需要从头开始!
返回firstFunction(new Array(),existingArray);
//检查值是否不在'thisArray'中
var check = new Array(existingArray [test1]);
否则如果(jQuery.inArray(check,thisArray ==-1){
//值不在新数组中,因此添加它
thisArray.push(check);
// thisArray已更改。需要重启第二个功能
secondFunction(thisArray,existingArray);
}
}
}
}
}
我希望
返回secondFunction(thisArray,existingArray);
将重置并重新启动该功能,但显然没有发生。
有没有办法停止当前函数并循环并使用更新的变量重新启动?
最佳答案
我没有得到您正在尝试做的事情,但是基于以下事实,即return停止了secondFunction的执行,并且thisArray从未更改,
您可以将循环添加到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;
}
}
}
}
并且在secondFunction中,而不是返回数组,返回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;
关于javascript - 如何使用更新的变量停止递归和/或重新启动当前函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4495769/