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

What's the best way to restart an AS3 loop?

我正在遍历一个名称列表,想检查是否有匹配特定名称的名称,例如 "Todd"。

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

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

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

是打破匹配循环的想法,例如将 var count:int 加 1,然后重新开始循环搜索,例如...

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

?

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

谢谢。

这是我想出的:

你首先需要一个 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 确实是目前为止我想出的唯一停止循环的方法。我不知道是否有更好的方法,但这是我目前所知道的方法。不过,可能需要一些时间才能正确处理。

有一个 Array.indexOf(...) 方法 returns -1 如果没有匹配项或索引(0 或以上)第一个完全匹配的。所以,类似的东西:

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) > -1);
    // Proceed looping if such a name is in the given Array.

    return result;
}