I have an array with list of model objects
model object has properties Name, Age, gender, I have date as follows
user* user1.name = "Bob",
user1.age = "10",
user1.gender = "M",
user* user2.name = "Bob",
user2.age = "11",
user2.gender = "M",
user* user3.name = "Woz",
user3.age = "15",
user3.gender = "M",
user* user4.name = "Woz",
user4.age = "16",
user4.gender = "M",
Now I need to get the unique name and lesser age as result.
user* user1.name = "Bob",
user1.age = "10",
user1.gender = "M",
user* user3.name = "Woz",
user3.age = "15",
user3.gender = "M",
what would be the efficient way to derive the above result. Thanks In advance Any Hint or help would appreciated.
You can simply iterate the array looking for the youngest users, storing each one in a dictionary keyed by name. Once you have iterated the array simply get all of the dictionary values as an array;
-(NSArray*)getYoungestUniqueUsersFromArray:(NSArray*)users {
NSMutableDictionary* youngestUsersDict = [NSMutableDictionary new];
for (User* user in users) {
User* currentUser = youngestUsersDict[user.name];
if (currentUser == nil || user.age < currentUser.age) {
youngestUsersDict[user.name]=user;
}
}
NSArray* youngestUsers = [youngestUsersDict allValues];
return youngestUsers;
}