Я думаю, что вы можете сделать это:
2.1.0 :001 > parent_array = [["red", "green", "blue"], ["small", "large", "medium"], ["loose", "tight"]]
=> [["red", "green", "blue"], ["small", "large", "medium"], ["loose", "tight"]]
2.1.0 :002 > first_array = parent_array.shift
=> ["red", "green", "blue"]
2.1.0 :003 > first_array
=> ["red", "green", "blue"]
2.1.0 :004 > parent_array
=> [["small", "large", "medium"], ["loose", "tight"]]
# Use the splat operator (*)
2.1.0 :006 > product = first_array.product(*parent_array)
=> [["red", "small", "loose"], ["red", "small", "tight"], ["red", "large", "loose"], ["red", "large", "tight"], ["red", "medium", "loose"], ["red", "medium", "tight"], ["green", "small", "loose"], ["green", "small", "tight"], ["green", "large", "loose"], ["green", "large", "tight"], ["green", "medium", "loose"], ["green", "medium", "tight"], ["blue", "small", "loose"], ["blue", "small", "tight"], ["blue", "large", "loose"], ["blue", "large", "tight"], ["blue", "medium", "loose"], ["blue", "medium", "tight"]]
2.1.0 :007 > result = product.map {|array| array.join(' ') }
=> ["red small loose", "red small tight", "red large loose", "red large tight", "red medium loose", "red medium tight", "green small loose", "green small tight", "green large loose", "green large tight", "green medium loose", "green medium tight", "blue small loose", "blue small tight", "blue large loose", "blue large tight", "blue medium loose", "blue medium tight"]
Возможно ли, да. Возникает вопрос, как вы хотите хранить каждый массив? Что вы делаете с этими данными, что нужно отделить? –
Я бы хотел, чтобы дочерние массивы оставались массивами, но не были в родительском. Я пытаюсь вызвать 'product' в первом массиве и передать остальные массивы в отдельности. – jmcharnes
@jmcharnes Возможно, вы можете отредактировать свой вопрос, чтобы четко объяснить эту цель в деталях. (Это определенно возможно, и не особенно сложно.) – Ajedi32