重新启动AS3循环的最佳方法是什么?

问题描述 投票:1回答:2

我正在遍历名称列表,并想检查是否与特定名称匹配,例如“ Todd”。

如果有匹配项,我现在想再次遍历所有名称,以检查Todd(1)的存在。

如果有匹配项,我现在想再次遍历所有名称,以检查Todd(2)的存在。

依此类推,直到我得到名称的第一个可用增量,例如“ Todd(7)”

是在比赛中中断循环,将例如var count:int递增1,然后重新启动循环搜索,如...

if(names[i]=="Todd (" + count + ")" ...

如果是这样,请在满足条件后如何在中断循环后重新启动循环?

谢谢。

loops actionscript-3
2个回答
0
投票

这是我想出的:

您首先需要一个for循环,它将看起来像这样:

for(var i:int = 0; i < names.length - 1;i++){
     if(names[i] == "Todd (" + count + ")"{
         count++;
         i = names.length - 1;
     }
}

让我知道您是否需要用于创建函数的语法来保存此内容。也就是说,如果您想从另一个函数中调用该函数,在这种情况下,我认为“ count”变量必须是全局变量,这样您才不会从修改它的函数中调用它,因此,将其重置并不允许发生您想发生的事情。

我想知道的另一件事是,如果您只是要组织一个数组,那么有内置的排序功能可以做到这一点。

另外,i = names.length确实是到目前为止我想出的唯一停止循环的方法。我不知道是否有更好的方法,但这是我目前知道的方法。可能需要花点时间才能弄清楚它。


0
投票

有一个Array.indexOf(...)方法,如果没有匹配项或第一个完全匹配项的索引(0或更高),则返回-1。因此,类似这样:

function availableIndex(list:Array, value:String):int
{
    var result:int = 0;
    var aName:String;

    do
    {
        // Get the next index (starts with 1).
        result++;

        // Construct the next name based on the index.
        aName = value + " (" + result + ")";
    }
    while (list.indexOf(aName) < 0);
    // Quit looping if there's no such a name in the given Array.

    return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.