2017-06-27 8 views
-2

異なるデータ型を持つ配列を指定すると、文字列要素のみの新しい配列を返す関数を作成しようとしています。私はこのようになります新しい配列を返す関数を書きたいRuby:配列から文字列以外の要素をすべて削除する

arr = [1, 3, 'hello', 'goodbye', 20, 'arrays are fun'] 

:たとえば、配列の指定された

new_arr = ['hello', 'goodbye', 'arrays are fun'] 

を私はこれまでいくつかの方法があります知っているが何であります最も効率的な方法は?私はあなたが.grepを使用できることを知っていますが、これは最も効率的な実装ですか?

+3

あなたはこれまでに何を試しましたか?そしてどこで立ち往生しましたか? – smarx

答えて

4
array.delete_if { |obj| !(obj.is_a? String) } 
+3

または 'keep_if'は'! 'を避けるために – Stefan

+0

ありがとう!私も '.grep'が動作することを発見しました! –

0

私は方法grepが見つかった!

def remove_non_strings(array) 
    array.grep(String) 
end 
+0

'grep'は新しい配列を返します。既存の配列は変更しません。 – Stefan

+0

私はそれを知らなかった。彼らはどちらも私のプログラムのために働いたが、それは知っている良い区別です。ありがとうございました! –

関連する問題