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



我正在循环浏览一个名称列表,并希望检查是否有与特定名称匹配的名称,例如"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(…(方法,如果没有匹配项或第一个完全匹配项的索引(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) > -1);
// Proceed looping if such a name is in the given Array.
return result;
}

相关内容

最新更新