[英]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.