質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

808閲覧

二次元配列を一次元配列として取得したい

westlagoon114

総合スコア13

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2018/11/25 07:10

二次元配列を一次元配列で取得したい

array=[[1,2,3],[4,5,6]]

このような配列があります。これを

arry1=[1,2,3] arry2=[4,5,6]

という形に分けて取得したいです。
arry1=array[0]というやり方ではなくeachの二重ループで取り出す方法を教えていただけるとありがたいです。
よろしくお願いいたします。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2018/11/25 08:13

「eachの二重ループ」で取り出すって、「1,2,3,4,5,6]という配列を取り出したいという事ですか? [1,2,3] と[4,5,6]を取り出すなら、一重ループで十分ですからね。
westlagoon114

2018/11/25 08:50

ややこしくてすみません。 二重ループでなければなければいけないという訳ではないです。 二重ループで..と聞いていた理由は私が自分で解決法を調べていた際に ``` array.each do |array1, array2| puts array1,array2 end ``` という1重の書き方を見つけたのですが、それではうまくいかなかったため二重ループなのでやるべきなのでは..と勘違いしていました。
guest

回答2

0

ベストアンサー

2 つの方法で書いてみました。

ruby

1array = [[1, 2, 3], [4, 5, 6]] 2 3arry1 = [] 4arry2 = [] 5array.each_with_index do |v, idx| 6 v.each do |x| 7 arry1 << x if idx == 0 8 arry2 << x if idx == 1 9 end 10end 11p arry1 12p arry2 13puts 14 15arry1 = [] 16arry2 = [] 17arryx = [arry1, arry2] 18array.each_with_index do |v, idx| 19 v.each do |x| 20 arryx[idx] << x 21 end 22end 23p arry1 24p arry2 25puts 26 27v1 = array.flatten 28a_size = v1.size / 2 29arry1 = v1[0 ... a_size] 30arry2 = v1[a_size ... a_size * 2] 31p arry1 32p arry2

2番目の方法は、1番目の方法から if 文を取り除く工夫をしたものです。

3 番目の flatten をつかった方法はおまけです。

投稿2018/11/25 11:12

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

westlagoon114

2018/11/25 12:50

1番で解決しました! ありがとうございました!
guest

0

ruby

1array1, array2 = array

なぜ二重ループでなければならないのでしょうか。そちらの理由がわかれば、適切な方法を提案できるかもしれません。

投稿2018/11/25 08:40

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

westlagoon114

2018/11/25 08:50

ややこしくてすみません。 二重ループでなければなければいけないという訳ではないです。 二重ループで..と聞いていた理由は私が自分で解決法を調べていた際に ``` array.each do |array1, array2| puts array1,array2 end ``` という1重の書き方を見つけたのですが、それではうまくいかなかったため二重ループなのでやるべきなのでは..と勘違いしていました。
maisumakun

2018/11/25 09:36

2つと決まっているなら、ループ自体不要ですし、バラバラな変数にループから代入するのは物事を不必要に煩雑にさせるだけです。
westlagoon114

2018/11/25 11:21

ありがとうございます。 もう一度自分で実装内容をよく考えます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問