/ / ¿Cómo puedo recorrer los arreglos omitiendo elementos referidos anteriormente? - Ruby, matrices

¿Cómo puedo recorrer las matrices omitiendo los elementos referidos anteriormente? - ruby, matrices

¿Hay una manera de recorrer dos matrices y hacer que se refieran a un elemento determinado cada vez? Por ejemplo:

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

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

Los resultados se verían como:

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

Estoy tratando de hacerlo para que cuando una variable de first_array se pasa a trabajar con second_array, se mueve a la siguiente variable en second_array, saltándose la variable utilizada anteriormente.

Respuestas

8 para la respuesta № 1

Es decir zip.

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

2 para la respuesta № 2

Podrías hacer algo como esto:

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 para la respuesta № 3

Suponiendo que, como en su ejemplo, las dos matrices sean del mismo tamaño, podría usar Array # transposición:

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

Cuando trabajas con un array a de matrices de igual tamaño (aquí [a1,a2]) y quiere operar en [a[0][i],a[1][i],..] para cada i, siempre tienes la opción de usar transpose o Array # zip. En cierto sentido, son Yin y yang.

También puedes usar índices:

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

0 para la respuesta № 4

La segunda matriz dada es siempre al menos tan larga como la primera

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