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

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

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

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

Q&A

解決済

2回答

1463閲覧

既に格納した要素を入れずに配列から配列に要素を格納したい

terate

総合スコア103

Ruby

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

0グッド

0クリップ

投稿2016/05/23 12:04

空の配列aryにary1の要素をeachで1つずつ入れていき、すでに同じ文字列の要素が入っている時は入れないようにしたいです。
これをincludeメソッドを使って書きたく、下記のような形かな?とイメージを考えましたがうまくいきません。どのようにしたら良いでしょうか?

※uniqメソッドを使って重複した文字列を取れると思いますが、今回は下記に近い形でincludeを使って書きたいです。

ruby

1 ary = [] 2ary1 = ["あ","い","う","え","お","か","き","く","け","こ","い","お","く"] 3 4ary1.each do |hiragana| 5 ary << hiragana unless ary.include?("aryに既に入れた要素") 6end 7 8p ary 9 10#期待する出力結果 11 ["あ","い","う","え","お","か","き","く","け","こ"] 12

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

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

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

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

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

guest

回答2

0

質問のあったコードと同様の動作をするものを、いろいろな方法で書いてみました。
質問にあるコードでは、 ary を事前に [] に初期化しておく必要がありますが、
↓にあげた方法に幾つかでは、ary 変数の初期化は不要です。)

a.rb

ruby

1ary1 = ['あ', 'い', 'う', 'え', 'お', 'か', 'き', 'く', 'け', 'こ', 'い', 'お', 'く'] 2 3ary = [] 4ary1.each do |item| 5 ary << item unless ary.include?(item) 6end 7p ary 8 9ary = [] 10ary1.each_with_index do |item, idx| 11 ary << item if ary1.index(item) == idx 12end 13p ary 14 15ary = ary1.inject([]) { |a, e| a.include?(e) ? a : a.push(e) } 16p ary 17 18ary = ary1.select.with_index { |item, idx| ary1.index(item) == idx } 19p ary 20 21p ary1.uniq

実行結果

$ ruby a.rb ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "a"] ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "a"] ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "a"] ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "a"] ["あ", "い", "う", "え", "お", "か", "き", "く", "け", "こ", "a"]

投稿2016/05/23 15:39

katoy

総合スコア22324

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

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

terate

2016/05/24 03:01

なるほど!毎度勉強になります!ありがとうございます!
guest

0

ベストアンサー

それで問題ないと思います。

"aryに既に入れた要素"のところをhiraganaに変えて実行したところ、
期待通りの結果が得られました。

投稿2016/05/23 12:10

argius

総合スコア9388

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

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

terate

2016/05/23 12:24

あ!"aryに既に入れた要素"にhiraganaを入れるところを違うことやってしまってました。。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問