我有一个for循环,并希望将其转换为递归函数。
我有一个提示,应该弹出每个项目并被解雇,然后再转到列表中的下一个项目。这种行为似乎不适用于正常的for循环。循环在提示甚至显示之前完成,然后只显示一个提示,即使列表中有多个项目应该显示提示。
(我不完全确定它是否适用于递归函数,但从我所看到的它看起来很有希望。如果我错了,那么转换是没有意义的。)
我一直在寻找其他例子,但我似乎无法理解他们的工作原理。
这是我原来的循环:
for(var i = 0;i < items.get_count();i++) {
var item = items.getItemAtIndex(i);
//Is the item we're looking at in need of approval?
if (item.get_item("_ModerationStatus") === 2)
{
//Yes, prompt for approval. (code for prompt goes here.)
//Wait until prompt has received a response before going on next list item.
}
else
{
//No, do nothing.
}
}
我的尝试看起来有点难过。我不确定从哪里开始:
function recursiveCheckRequests(i)
{
if (i < items.get_count())
{
function checkRequest(items, )
//???
}
}
recursiveCheckRequests(0);
答案 0 :(得分:1)
您必须从内部调用该函数。
function recursiveCheckRequests(i) {
var item = items.getItemAtIndex(i);
//Is the item we're looking at in need of approval?
if (item.get_item("_ModerationStatus") === 2) {
//Yes, prompt for approval. (code for prompt goes here.)
//Wait until prompt has received a response before going on next list item.
}
if (i + 1 < items.get_count()) {
recursiveCheckRequests(i + 1);
}
}
recursiveCheckRequests(0);
答案 1 :(得分:0)
这就是我要做的事情
function recursiveCheckRequests(pos,arr,length)
{
if (pos === length){
return true;
}
//do something here with the array
return recursiveCheckRequests(pos+1,length)
}
recursiveCheckRequests(0,array,array.length);
这样,函数完全独立于要传递的数组,并且可以指定要执行的迭代的限制。