2017-02-16 4 views
-1

Angenommen, ich habe ein Array array = [1,2,3,4,5]sammeln alle Elemente und Indizes eines Arrays in zwei getrennten Arrays in Ruby

I wie alle Elemente und Indizes der Anordnung in 2 separate Arrays gesammelt werden sollen

[[1,2,3,4,5], [0,1,2,3,4]] 

Wie mache ich das mit einer einzigen Ruby collect-Anweisung?

Ich versuche, es zu tun mit diesem Code

array.each_with_index.collect do |v,k| 
    # code 
end 

Was im Codeabschnitt gehen sollte um die gewünschte Ausgabe zu erhalten?

+0

Willkommen bei Stack Overflow. Bitte lesen Sie "[fragen]" zusammen mit den verlinkten Seiten und "[mcve]". Wir würden gerne Beweise für Ihre Bemühungen sehen, nicht nur einen bloßen Überblick über den Codeblock. http://meta.stackoverflow.com/questions/261592 hilft, es zu erklären. –

+0

Ein anderer Weg: '[arr, Array.new (arr.size, &: selbst)]'. –

Antwort

0

Hier ist eine einfache Art und Weise:

array = [1,2,3,4,5] 
indexes = *array.size.times 
p [ array, indexes ] 
# => [[1, 2, 3, 4, 5], [0, 1, 2, 3, 4]] 

Sehen Sie es auf repl.it: https://repl.it/FmWg

1

Oder noch einfacher:

[array, array.each_index.to_a] 
0

ich die erste Antwort, die wie vor einer Weile geschrieben wurde . Ich weiß nicht, warum der Typ es gelöscht hat.

array.each_with_index.collect { |value, index| [value,index] }.transpose 

Ich verwende eine benutzerdefinierte Vektorklasse Eigentlich, auf dem ich die each_with_index Methode nenne.

Verwandte Themen