比较NSMutableArrays

时间:2014-03-11 18:23:59

标签: ios objective-c nsmutablearray comparison

我有两个NSMutabaleArrays。说,假设我有2个数组,

array1 = {A,B,Y,E,P,Q,M,S,R,Q} 数组2 = {Y,L,T}

我想检查array2的值是否存在于数组1中并获取结果,如果所有值都返回null,并且如果没有任何值,则将其放入数组中。

3 个答案:

答案 0 :(得分:3)

由于根据评论,订单对您无关紧要,实现此目的的最简单方法是使用NSSet

NSArray *array0 = @[@"A", @"B",@"C",@"E",@"F",@"G",@"H",@"I"];
NSArray *array1 = @[@"E", @"H"];
NSMutableSet *result = [NSMutableSet setWithArray:array0];
[result minusSet:[NSSet setWithArray:array1]];

答案 1 :(得分:0)

您可以使用indexesOfObjectsPassingTest:

执行此操作
NSIndexSet *indexesOfObjectsNotInArray1 = [array2 indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [array1 indexOfObjectIdenticalTo:obj] == NSNotFound;
}];
NSArray *objectsNotInArray1 = [array2 objectsAtIndexes:indexesOfObjectsNotInArray1];

答案 2 :(得分:0)

您可以迭代两个数组,然后比较对象。

for (int i = 0; i < [array2 count]; i++)
    {
        for (int j = 0; j < [array1 count]; j++) {
            if (![[array1 objectAtIndex:j] isEqual:[array2 objectAtIndex:i]]) {
                // objects are different
                // manipulate the objects here (use index j to reference object in array1)
                NSLog(@"array 1 index %d (%@) and array 2 index %d (%@) are unequal", j, [array1 objectAtIndex:j], i, [array2 objectAtIndex:i]);
            }
        }
    }