我正在遍历名称列表,并想检查是否与特定名称匹配,例如“ 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) < 0);
// Quit looping if there's no such a name in the given Array.
return result;
}