我需要找出没有nil的数组的最小值。
[{val: 1},{val: nil}].min_by { |v| v[:val] }
得
ArgumentError: comparison of NilClass with 1 failed min_by
我的下一个方法是:
[{val: 1},{val: nil}].min_by { |v| v[:val] || 0 }
但这会返回{:duration=>nil}
我只想获得没有零值的最小值 - 预期为1
答案 0 :(得分:5)
[{val: 1},{val: nil}].delete_if { |v| v[:val].nil? }.min_by { |v| v[:val] }
在值为nil的情况下,您可以使用delete_if
来排除与块匹配的数组元素。
答案 1 :(得分:4)