如何从一个数组中获取具有相同属性的对象?

例如:我有两个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将包含你的sorting数据