0

我最近遇到了一些泡菜,我正在尝试比较这两个数组。

Array1 = ["Red","Green","Blue","Yellow","Black"];

Array2 = ["Green","Violet","Black","White"];

我想知道 Array2 中的所有值是否都不在 Array 1 中。所以我想出的是:

for(var i:int=0;i<Array2.length;i++)
{
    if(Array1.indexOf(Array2[i]) == -1)
    {
        trace("No String found!")
    }
} 

现在它每次找不到值时都会给我一个跟踪。我遇到的问题是,我希望它仅在 Array2 中的所有值都不在 Array1 中时才执行跟踪。

有没有人有想法?

4

2 回答 2

2

最好的方法是搜索直到找到一个值,然后退出循环。如果未找到值,它将自然退出并且标志将保持为假。然后,您检查标志是否为真/假,并相应地执行您的操作。

尝试这个:

var found:Boolean = false;
for(var i:int = 0; i < Array2.length && !found; i++)
{
    found = Array1.indexOf(Array2[i]) == -1;
}

if (!found)
{
    trace("No String found!");
}
于 2013-11-14T17:24:59.763 回答
0

我想知道Array2 中的所有值是否都不在 Array 1 中

你的意思是全部还是任何?对于所有你可以使用(阅读:复杂化)这个 casalib arrayUtil 类:http ://as3.casalib.org/docs/org_casalib_util_ArrayUtil.html#containsAll

此函数比较所有值是否存在,那里还有其他可能有帮助的函数。

于 2013-11-14T21:42:54.620 回答