簡體   English   中英

減去數組,關於字典中的鍵

[英]Subtracting the array, Regarding key in dictionary

我說兩個數組

NSArray *array1=@[ @{@"key1":@"A",@"key2":@"AA"},@{@"key1":@"C",@"key2":@"CC"},@{@"key1":@"E",@"key2":@"EE"},@{@"key1":@"G",@"key2":@"GG"}];
NSArray *array2=@[ @{@"key1":@"A",@"key2":@"AAA"},@{@"key1":@"Z",@"key2":@"ZZZ"}];

我想減去數組,這應該是預期的重用,

NSArray *resultArray=@[ @{@"key1":@"C",@"key2":@"CC"},@{@"key1":@"E",@"key2":@"EE"},@{@"key1":@"G",@"key2":@"GG"}];

我嘗試了以下代碼,但沒有工作

NSArray *extracted = [array1 valueForKey:@"key1"];
NSMutableSet *pressieContactsSet = [NSMutableSet setWithArray:extracted];
NSMutableSet *allContactSet = [NSMutableSet setWithArray:array2];

[allContactSet minusSet:pressieContactsSet];

NSLog(@"%@",allContactSet);

請嘗試以下代碼

首先獲取臨時數組中的所有key1對象。 然后在array1上應用過濾器,並檢查array1對象是否包含arrayKey1對象。

確保它只會檢查key1鍵。

NSArray *arrKey1 = [array2 valueForKey:@"key1"];
NSPredicate *pred = [NSPredicate predicateWithBlock:
                            ^BOOL(id evaluatedObject, NSDictionary *bindings)
                            {
                                if ([arrKey1 containsObject:evaluatedObject[@"key1"]])
                                {
                                    NSLog(@"found : %@",evaluatedObject);
                                    return NO;
                                }
                                else
                                {
                                    NSLog(@"Not found : %@",evaluatedObject);
                                    return YES;
                                }

                            }];
NSArray *arrSubtracted = [array1 filteredArrayUsingPredicate:pred];

NSLog(@"%@", arrSubtracted);

或者您可以使用enumerateObjectsUsingBlock

NSMutableArray *resultArray = [NSMutableArray new];

[array1 enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
{
    if (![arrKey1 containsObject:obj[@"key1"]]) {
        [resultArray addObject:obj];
    }
}];
NSLog(@"%@",resultArray);

希望這會幫助你。

這應該工作。

NSArray *array1=@[ @{@"key1":@"A"},@{@"key1":@"C"},@{@"key1":@"E"},@{@"key1":@"G"}];
NSArray *array2=@[ @{@"key1":@"A"},@{@"key1":@"Z"}];

NSMutableSet *pressieContactsSet = [NSMutableSet setWithArray:array1];
NSSet *allContactSet = [NSSet setWithArray:array2];

[pressieContactsSet minusSet:allContactSet];

NSArray *result = [pressieContactsSet allObjects];

NSLog(@"%@",result);

請享用!

NSArray *array1=@[ @{@"key1":@"A"},@{@"key1":@"C"},@{@"key1":@"E"},@{@"key1":@"G"}];
NSArray *array2=@[ @{@"key1":@"A"},@{@"key1":@"Z"}];
NSMutableArray *resultArray = [NSMutableArray arrayWithArray:array1];
[resultArray removeObjectsInArray:array2];
NSLog(@"array %@",resultArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM