use*_*773 0 ruby arrays object
我有一个数组数组,具有不同的对象类型,如果非整数乘以 2 的总和大于或等于整个数组的总和,我希望从数组数组中提取数组。例如:
elements = [
[1, 2, "3", "4"],
[1, "2", "3", 5],
["1", 2, 3, "4.0"],
[1, 2, 3, 4, "5"],
[1, 2, 3.0, 4.0, 5.0]
]
expected output:
elements = [
[1, 2, "3", "4"],
["1", 2, 3, "4.0"],
[1, 2, 3.0, 4.0, 5.0]
]
Run Code Online (Sandbox Code Playgroud)
由于字符串和浮点数之和大于或等于整数之和。
您可以使用:
Array#select 根据条件提取数组Enumerable#grep_v 提取非整数Array#sum计算总和(to_f用于转换)elements.select do |ary|
ary.grep_v(Integer).sum(&:to_f) * 2 >= ary.sum(&:to_f)
end
#=> [[1, 2, "3", "4"], ["1", 2, 3, "4.0"], [1, 2, 3.0, 4.0, 5.0]]
Run Code Online (Sandbox Code Playgroud)
您也可以将to_f-call传递给grep_v,即ary.grep_v(Integer, &:to_f).sum但我更喜欢sum在双方都有相同的-calls。