1. ホーム
  2. ruby

[解決済み] Rubyの配列:select()、collect()、map()

2022-03-13 19:09:31

質問

マッピングの構文について。

a = ["a", "b", "c", "d"]      #=> ["a", "b", "c", "d"] 
a.map {|item|"a" == item}     #=> [true, false, false, false] 
a.select {|item|"a" == item}  #=> ["a"]

質問 私が持っている場合はどうでしょう。

 irb(main):105:0> details[1]
 => {:sku=>"507772-B21", :desc=>"HP 1TB 3G SATA 7.2K RPM LFF (3 .", :qty=>"", 
 :qty2=>"1", :price=>"5,204.34 P"}

この配列の qty 値が空のエントリーをすべて削除するか、または何らかの値を持つものだけを選択したいのです。

試してみました。

details.map {|item|"" == item}

ただ、多くのfalseが返され、同じようにmapをselectに変えて使用すると、こうなります。

[]

解決方法は?

以下のようになります。 details はハッシュの配列です。つまり item の内部にはハッシュ全体が入ります。したがって、チェックするために :qty のキーは、次のようにします。

details.select{ |item| item[:qty] != "" }

これで :qty キーが空文字列でない場合。

公式セレクトドキュメント