Perdón por el título pobre, simplemente no sé cómo expresar lo que quiero aquí sin ejemplos.
tengo lo siguiente
[ [ [1,2], true ], [ [3,4], false ] ]y quiero conseguir
[ [1, true], [2, true], [3, false], [4, false] ]¿Hay alguna forma limpia de hacer esto en Ruby?
Puede usar una combinación de flat_map en la matriz externa y map en la matriz interna. Algo como:
arr = [ [ [1,2], true ], [ [4,5], false ] ] arr.flat_map do |nums, val| nums.map {|num| [num, val]} endPodrías usar Array#map y Array#product :
arr = [ [ [1,2], true ], [ [3,4], false ] ].flat_map { |(arr, bool)| arr.product([bool]) } # [[1, true], [2, true], [3, false], [4, false]]Usando Enumerable#each_with_object
ary = [ [[1, 2], true], [[3, 4], false] ] ary.each_with_object([]) do |(nums, boolean), new_ary| nums.each { |num| new_ary << [num, boolean] } end # => [[1, true], [2, true], [3, false], [4, false]]