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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

8249閲覧

【rails】二重配列からの値の取得

gogoackman3

総合スコア109

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/10/31 14:19

###以下の様な二重配列から値を取得するにはどうすれば良いでしょうか?

配列[ [1, nil], [5, 123], [3, 1900], [4, nil] ]をインスタンス変数@arrayとする。

①二重配列の下層配列、添字0の数字と合致するかどうか
②合致した場合、その下層配列の添字1の数値を取得

例)上記の配列を対象とした場合、5で@arrayを検索し、「5」があるので、「123」を取得するといった具合です。

以下の様な検索の仕方は思いついたものの、HITした場合に、その配列の添字1の値を取得する方法まで思い浮かびません・・・。

ruby

1@array[0].include?(5)

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

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

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

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

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

guest

回答2

0

複数ヒットした場合、一つもヒットしなかった場合のことを考慮し、 配列を返すことにしてみました。

a.rb

ruby

1def my_filter(ary, v) 2 ary.inject([]) do |memo, vec| 3 memo << vec[1] if vec[0] == v 4 memo 5 end 6end 7 8def my_filter2(ary, v) 9 ary.select { |vec| vec[0] == v }.map { |vec| vec[1] } 10end 11 12p my_filter([ [1, nil], [5, 123], [3, 1900], [4, nil] ], 5) 13p my_filter([ [5, 123], [5, 1900] ], 5) 14p my_filter([ [1, 123] ], 5) 15p my_filter([ [] ], 5) 16p '' 17 18p my_filter2([ [1, nil], [5, 123], [3, 1900], [4, nil] ], 5) 19p my_filter2([ [5, 123], [5, 1900] ], 5) 20p my_filter2([ [1, 123] ], 5) 21p my_filter2([ [] ], 5)

実行結果

$ ruby a.rb [123] [123, 1900] [] [] "" [123] [123, 1900] [] []

参考

投稿2016/10/31 17:04

katoy

総合スコア22324

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

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

0

ベストアンサー

findメソッドで要素を取得して、添字1を取得する方法が使えると思います。

例えば添字0が5の要素の添字1を取得するときには、find[0]が5の要素を取得して、[1]で123を取得することができます。

ruby

1@array = [ [1, nil], [5, 123], [3, 1900], [4, nil] ] 2 3@array.find{|arr| arr[0] == 5 }[1] 4#=> 123

投稿2016/10/31 14:30

cameluby

総合スコア891

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

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

gogoackman3

2016/10/31 16:21

いつもありがとうございます!実装したところ、無事いけましたー! この書き方は思いつきませんでした、助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問