2017-01-26 2 views
1

Ich habe ein Array von Arrays. Ich möchte das erste, zweite, dritte Element von Arrays verketten.Ruby: Übereinstimmung zuerst, zweite, diese usw. Elemente aus einem dimensionalen Array

Beispiel Arrays:

a = [[4, 5, 6], [1, 2, 3], [8, 9, 10]] 
a1 = [[1, 2, 3], [8, 9, 10]] 
a2 = [[4, 5, 6], [1, 2, 3], [8, 9, 10], [11, 21, 31]] 

Output:

out of a: [[4,1,8],[5,2,9],[6,3,10]] 
out of a1: [[1,8],[2,9],[3,10]] 
out of a2: [[4,1,8,11],[5,2,9,21],[6,3,10,31]] 
+2

Ich kann den Titel nicht analysieren. –

Antwort

4

Verwenden transpose Methode

a.transpose 
=> [[4, 1, 8], [5, 2, 9], [6, 3, 10]] 
1

Array#transpose:

[a, a1, a2].map(&:transpose) 
# [ 
# [[4, 1, 8], [5, 2, 9], [6, 3, 10]], 
# [[1, 8], [2, 9], [3, 10]], 
# [[4, 1, 8, 11], [5, 2, 9, 21], [6, 3, 10, 31]] 
# ] 
1

Immer wenn Array#transpose verwendet werden kann, so kann Enumerable#zip.

a.first.zip *a.drop(1) 
    #=> [[4,1,8],[5,2,9],[6,3,10]] 
Verwandte Themen