通过加权两个参数来排序NSArray
问题描述:
我有NSArray
的NSDictionary
。我有两个特定的键我想用来排序我的数组。基本上,我现在有两个NSSortDescriptor
S:通过加权两个参数来排序NSArray
descriptor = [NSSortDescriptor sortDescriptorWithKey:@"averageNote" ascending:NO];
descriptor2 = [NSSortDescriptor sortDescriptorWithKey:@"[email protected]" 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;
}
}];
看看这个问题:http://stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it。您可以使用块对数组进行排序,并可以将平均值和计数值乘以上述百分比并比较结果。 –
太好了,非常感谢。 –
完成此操作的另一种方法是添加计算属性say'rank'并将其用于排序。 –