def valueize(val)
# randomly returns nil or random integer ([-100 to +100] + val)
((rand(100) % 3) == 0) ? nil : (rand(200)-100+val)
end
hash = {
x: 11,
y: 22,
z: 33
}
sort_by_abs = hash.sort_by{ |k, v| (valueize(v)).abs }
sort_by_min = hash.sort_by{ |k, v| (valueize(v)) }
sort_by_max = hash.sort_by{ |k, v| -(valueize(v)) }
对于三种排序中的每一种,确保 nil 结果始终排在底部的最红宝石方法是什么?
条件:
- 潜在哈希值的范围未知(哈希值始终为整数)
- 无法修改valueize 方法
- 排序块可以修改