如何根据其他数组的对象从数组中删除对象
我想删除array
中的每个对象,可以在array2
找到name
键的值。 我已经尝试了循环,但不幸的是我的实现不起作用, if
和else
语句记录了每个对象。
这就是我想要实现的目标:
NSArray *array = @[ @{ @"type" : @"2", @"name" : @"apple" }, @{ @"type" : @"1", @"name" : @"peanut" }, @{ @"type" : @"3", @"name" : @"orange" }, @{ @"type" : @"1", @"name" : @"cheese" }, ]; NSArray *array2 = @[ @{ @"type" : @"2", @"name" : @"apple" }, @{ @"type" : @"1", @"name" : @"cheese" }, @{ @"type" : @"3", @"name" : @"orange" }, ]; // new array from array and array2, that contains the unique objects from array NSArray *newArray = @[ @{ @"type" : @"1", @"name" : @"peanut" }, ];
我不确定这是一个好方法,所以如果有人能够展示如何用任何不同的技术来做这件事我会很高兴。 如果它必须使用可变或正常数组并不重要,我只是先尝试使用mutable。
这是我们尝试的:
NSMutableArray *newArray = [self.array1 mutableCopy]; for (PFObject * object in newArray) { PFObject *placeholderObject = object; for (PFObject *object2 in self.array2) { if ([placeholderObject[@"name"] isEqualToString:object2[@"name"]]) { [self.array1 removeObject:object]; NSLog (@"EXISTING OBJECT FOUND %@", object); } else { NSLog(@"UNIQUE OBJECT FOUND %@", idO[@"hirCime"]); } } }
NSMutableArray *arr = [NSMutableArray arrayWithArray:array]; for (NSDictionary *objDic1 in array) { for (NSDictionary *objDic2 in array2) { if ([objDic1[@"name"] isEqualToString:objDic2[@"name"]]) { [arr removeObject:objDic1]; } } } NSArray *resultArr = (NSArray*)arr;
如果你愿意,可以通过删除元素来实现这一点,但是你必须确保在迭代它时不改变数组。 这是一个例子(基于NSDictionary而不是PFObject ……但是类似的逻辑):
NSMutableArray *newArray = [array1 mutableCopy]; for (NSDictionary * object in array1) { NSDictionary *placeholderObject = object; for (NSDictionary *object2 in array2) { if ([placeholderObject[@"name"] isEqualToString:object2[@"name"]]) { [newArray removeObject:object]; NSLog (@"EXISTING OBJECT FOUND %@", object); break; } else { NSLog(@"UNIQUE OBJECT FOUND %@", object); } } }