我需要找出不带 nil 的数组的最小值。
[{val: 1},{val: nil}].min_by { |v| v[:val] }
得到
ArgumentError:NilClass 与 1 的比较失败 min_by
我的下一个方法是:
[{val: 1},{val: nil}].min_by { |v| v[:val] || 0 }
但这会返回 {:duration=>nil}
我只想得到没有零值的最小值 - 预期为 1
最佳答案
[{val: 1},{val: nil}].delete_if { |v| v[:val].nil? }.min_by { |v| v[:val] }
您可以使用 delete_if
排除与 block 匹配的数组元素,在您的值为 nil 的情况下。
关于ruby - 参数错误 : comparison of NilClass with 1 failed min_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21453316/