我有3个数组区域,min,max.If min和相应的max都是0然后我想把相应的区域变成数组。
region=["A","B","C","D","E","F","G"]
min= ["0","0","0","200","400","0","0"]
max= ["0","0","0","1000","1000","0","0"]
预期产出:
output=["A","B","C","F","G"]
在上面..ABCFG有相应的最小值和最大值都是0 ..所以我想要那些同时包含min和max 0的区域valuse..i.e区域
我在下面尝试但是没能继续下去
Hash[region.zip([min.map(&:to_i),max.map(&:to_i)].transpose)]
//output
{"A"=>[0, 0], "B"=>[0, 0], "C"=>[0, 0], "D"=>[200, 1000], "E"=>[400, 1000], "F"=>[0, 0], "H"=>[0, 0]}
答案 0 :(得分:4)
这样做:
region.zip(min, max).select {|_, a, b| a == '0' && b == '0'}.map(&:first)
答案 1 :(得分:2)
试试这个:
output = []
region.each_with_index { |r, i| output << r if min[i] == '0' && max[i] == '0' }
output # => ["A","B","C","F","G"]
答案 2 :(得分:1)
另一种方式:
emin, emax = min.to_enum, max.to_enum
region.select do
xmin = emin.next == '0'
xmax = emax.next == '0'
xmin && xmax
end
# => ["A", "B", "C", "F", "G"]
额外信用:可以简化为:
region.select do
emin.next == '0' && emax.next == '0'
end