/ / Wie kann ich Arrays durchlaufen, wobei zuvor verwiesene Elemente übersprungen werden? - Rubin, Arrays

Wie kann ich Arrays durchgehen, indem ich vorher erwähnte Elemente überspringe? - Ruby, Arrays

Gibt es eine Möglichkeit, zwei Arrays zu durchlaufen und sich jedes Mal auf ein bestimmtes Element zu beziehen? Zum Beispiel:

first_array = ["a", "b", "c", "d"]
second_array = ["e", "f", "g", "h"]

first_array.each |item| puts item.get(second_array)

Die Ergebnisse würden ungefähr so ​​aussehen:

a would work with e
b would work with f
c would work with g
d would work with h

Ich versuche es so zu machen, wenn eine Variable aus first_array wird übergeben, um mit zu arbeiten second_arraybewegt sich die nächste Variable in second_array, überspringt die zuvor verwendete Variable.

Antworten:

8 für die Antwort № 1

Das ist zip.

first_array.zip(second_array){|e1, e2| ...}

2 für die Antwort № 2

Du könntest so etwas tun:

first_array.each_with_index { |v, i| puts "#{v} can work with #{second_array[i]}" }
# a would work with e
# b would work with f
# c would work with g
# d would work with h

1 für die Antwort № 3

Angenommen, die beiden Arrays haben, wie in Ihrem Beispiel, dieselbe Größe, könnten Sie verwenden Array # transponieren:

a1 = %w{a b c d}
#=> ["a", "b", "c", "d"]
a2 = %w{e f g h}
#=> ["e", "f", "g", "h"]
[a1,a2].transpose { |s1,s2| puts "#{s1} and #{s2}" }
#-> a and e
#   b and f
#   c and g
#   d and h

Wann immer Sie mit einem Array arbeiten a gleich große Arrays (hier [a1,a2]) und wollen weiter operieren [a[0][i],a[1][i],..] für jede i, Sie haben immer die Möglichkeit zu verwenden transpose oder Array # zip. In gewissem Sinne sind sie es Yin und Yang.

Sie können auch nur Indizes verwenden:

a1.each_index { |i] puts "#{a1[i]} and #{a2[i]}" }

0 für die Antwort № 4

gegebenes zweites Array ist immer mindestens so lang wie das erste

first_array.each_with_index |item,index| do
puts "#{item} would work with #{second_array[index]}"
end