我正在构建一个小部件,以显示奥运会的奖牌数量.我有一个"国家"对象的集合,其中每个对象都有一个"name"属性,而"gold","silver","bronze"用于奖牌计数.
列表应该排序:1.首先通过总奖牌数2.如果相同的奖牌,按类型分类(金>银>铜,即两金> 1金+ 1银)3.如果相同的奖牌和类型,子 - 按字母顺序排列
我在ruby中这样做,但我认为语言并不重要.我确实找到了一个解决方案,但如果感觉必须有一个更优雅的方式来做到这一点.
这是我做的:
使用加权奖牌总数创建虚拟属性.因此,如果他们有2金和1银,加权总数将是"3.020100".1金,1银和1铜将是"3.010101"
由于我们希望将奖牌计数排序为最高,因此列表是按DESC排序的.但是之后我们想要按字母顺序(即ASC)进行子排序.所以我创建了一个字母反转单词的函数(即"canada"=>"xzmzwz")
将加权总数转换为字符串,将反转名称连接起来(即"3010101xzmzwz"),然后按降序排序.瞧.
到目前为止,有人已经想出如何在大约2行代码中做同样的事情.关心赐教?