如何从一个数组中获取与另一个数组具有相同属性的对象?
How get objects from one array with same properties of other?
例如:
我有两个 NSMutableArray
。一个@[1,2,3,4,5,6,7]
。其他有像
这样的对象
@[
@{@idObjectToSearch":1, @"name":@"aaaaa", @"surname": @"bbbbb"}, @{@idObjectToSearch":2, @"name":@"aaaaa", @"surname": @"ccccc"},
...
@{@idObjectToSearch":100, @"name":@"aaaaa", @"surname": @"cccdcd"}
];
那么我如何才能更有效地从第二个数组中提取所需的对象呢?
您需要对第二个数组使用 NSPredicate
。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch IN %@", firstArray];
//In above predicate instead of passing `1` you need to pass object from first array that you want.
NSArray *filterArray = [secondArray filteredArrayUsingPredicate:predicate];
//Now access Array objects
if (filterArray.count > 0) {
NSLog(@"%@",filterArray);
}
你可以这样做
NSMutableArray * arrSorted = [NSMutableArray new];
for(int i=0;i<arr.count;i++) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch == %@", firstArray[i]];
NSUInteger index = [secondArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
return [predicate evaluateWithObject:obj];
}];
if (index != NSNotFound) {
[arrSorted addObject:[arrM objectAtIndex:index]];
}
}
arrSorted
将包含您排序的数据
例如:
我有两个 NSMutableArray
。一个@[1,2,3,4,5,6,7]
。其他有像
@[
@{@idObjectToSearch":1, @"name":@"aaaaa", @"surname": @"bbbbb"}, @{@idObjectToSearch":2, @"name":@"aaaaa", @"surname": @"ccccc"},
...
@{@idObjectToSearch":100, @"name":@"aaaaa", @"surname": @"cccdcd"}
];
那么我如何才能更有效地从第二个数组中提取所需的对象呢?
您需要对第二个数组使用 NSPredicate
。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch IN %@", firstArray];
//In above predicate instead of passing `1` you need to pass object from first array that you want.
NSArray *filterArray = [secondArray filteredArrayUsingPredicate:predicate];
//Now access Array objects
if (filterArray.count > 0) {
NSLog(@"%@",filterArray);
}
你可以这样做
NSMutableArray * arrSorted = [NSMutableArray new];
for(int i=0;i<arr.count;i++) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch == %@", firstArray[i]];
NSUInteger index = [secondArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
return [predicate evaluateWithObject:obj];
}];
if (index != NSNotFound) {
[arrSorted addObject:[arrM objectAtIndex:index]];
}
}
arrSorted
将包含您排序的数据