1. ホーム
  2. ruby

[解決済み] 2つの配列を同時に反復処理するためのRubyの方法とは?

2022-06-25 01:14:30

質問

解決すべき問題というよりは、構文に関する好奇心です。

同じ長さの2つの配列があり、一度にそれら両方に対して反復処理を行いたい。例えば、あるインデックスで両方の値を出力する。

@budget = [ 100, 150, 25, 105 ]
@actual = [ 120, 100, 50, 100 ]

を使うことができるのは知っています。 each_index というように、配列にインデックスを付けることができます。

@budget.each_index do |i|
  puts @budget[i]
  puts @actual[i]
end

はありますか? Ruby の方法 を使うことはできますか?何か のような のようなものですか?

# Obviously doesn't achieve what I want it to - but is there something like this?
[@budget, @actual].each do |budget, actual|
  puts budget
  puts actual
end

どのように解決するのですか?

>> @budget = [ 100, 150, 25, 105 ]
=> [100, 150, 25, 105]
>> @actual = [ 120, 100, 50, 100 ]
=> [120, 100, 50, 100]

>> @budget.zip @actual
=> [[100, 120], [150, 100], [25, 50], [105, 100]]

>> @budget.zip(@actual).each do |budget, actual|
?>   puts budget
>>   puts actual
>> end
100
120
150
100
25
50
105
100
=> [[100, 120], [150, 100], [25, 50], [105, 100]]