通过加权两个参数对 NSArray 进行排序
Sort an NSArray by weighting two parameters
我有 NSArray
个 NSDictionary
。我有两个特定的键,我想用它们来对我的数组进行排序。基本上,我目前有两个 NSSortDescriptor
s:
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"averageNote" ascending:NO];
descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"reviews.@count" ascending:NO];
他们只是根据元素的平均音符对我的数组进行排序,然后根据评论数量排在第二位。
我想结合这两个元素来做出更真实的排名:例如,70% 的平均笔记和 30% 的评论数。
我怎样才能做到这一点?
这段代码会让数组按照你想要的排名自行排序,数组将按升序排序,如果你想按降序排列,将NSOrderedAscending
更改为NSOrderedDescending
。
NSMutableArray *array = [@[] mutableCopy];
[array sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
aClass a = obj1;
aClass b = obj2;
float rankOfA = a.averageNote*0.7 + a.reviewCount*0.3;
float rankOfB = b.averageNote*0.7 + b.reviewCount*0.3;
if (rankOfA > rankOfB) {
return NSOrderedAscending;
}
}];
我有 NSArray
个 NSDictionary
。我有两个特定的键,我想用它们来对我的数组进行排序。基本上,我目前有两个 NSSortDescriptor
s:
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"averageNote" ascending:NO];
descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"reviews.@count" ascending:NO];
他们只是根据元素的平均音符对我的数组进行排序,然后根据评论数量排在第二位。
我想结合这两个元素来做出更真实的排名:例如,70% 的平均笔记和 30% 的评论数。
我怎样才能做到这一点?
这段代码会让数组按照你想要的排名自行排序,数组将按升序排序,如果你想按降序排列,将NSOrderedAscending
更改为NSOrderedDescending
。
NSMutableArray *array = [@[] mutableCopy];
[array sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
aClass a = obj1;
aClass b = obj2;
float rankOfA = a.averageNote*0.7 + a.reviewCount*0.3;
float rankOfB = b.averageNote*0.7 + b.reviewCount*0.3;
if (rankOfA > rankOfB) {
return NSOrderedAscending;
}
}];