2012-02-25 7 views
3

場合はRubyの配列から値を取得する:私はこのコードを持つ配列をマッピングしていた状態

url = "http://www.cnn.com" 
page = Mechanize.new.get(url) 
images_url = page.images.map{|img| img.url.to_s if (img.width.to_i > 200)} 

私はコンソールでこの結果が得られます。

[nil, "http://i2.cdn.turner.com/cnn/dam/assets/110929092349-nelson-mandela-t1-main.jpg", nil, nil, nil, nil, nil, "http://i2.cdn.turner.com/cnn/dam/assets/120225123812-syria-mani-2-c1-main.jpg", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "http://i2.cdn.turner.com/cnn/dam/assets/120225022127-blue-fish-bin-tease.jpg", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil] 

私はゼロせずに、この配列を取得したいです値、その平均、私は配列のようなsthを取得したい:

["http://i2.cdn.turner.com/cnn/dam/assets/110929092349-nelson-mandela-t1-main.jpg", "http://i2.cdn.turner.com/cnn/dam/assets/120225123812-syria-mani-2-c1-main.jpg", "http://i2.cdn.turner.com/cnn/dam/assets/120225022127-blue-fish-bin-tease.jpg"] 
この場合、3つの値。

あなたは

答えて

9

あなたはそれから空の結果を削除するためにあなたのアレイ上compactメソッドを呼び出すことができますありがとうございました。あなたがnil以外のものを削除したい場合はまた、あなたはそれがしたいんしたい場合は、[!]強打を追加します(受信機を変更せずに、Array#deleteを使用することができます。

それともたい場合

images_url = page.images.map{|img| img.url.to_s if (img.width.to_i > 200)}.compact 
+0

ありがとうMatteoさんは、このケースの例を載せることができましたか?ありがとうございました! – hyperrjas

+0

確かに、私はちょうど答えにそれを加えました –

+0

'images_url = page.images.map {| img | img.url.to_s if(img.width.to_i> 200)}。compact! ' – hyperrjas

0

一致する場合以外の要素に基づいて要素を削除するには、Array#delete_ifを使用できます。ブロックの各要素を反復処理し、そのブロックの戻り値がtrueの場合は要素を削除します。

両方の:

 

    ary = [42, nil, "foo", "bar", "foo", Object.new, self, /hi/] 
    ary.delete("foo") #=> [42, nil, 'bar', #&ltObject:xxxxx&rt, main, /hi/] 
    ary    #=> [42, nil, "foo", "bar", "foo", Object.new, self, /hi/] 
    ary.delete_if {|elem| 
     elem.class == Object or 
     elem.kind_of?(Regexp) 
    }     #=> [42, nil, "foo", "bar", "foo"] 

:)

関連する問題