【Ruby】オブジェクト配列に格納されている空のオブジェクトを削除する
以下の様なオブジェクト配列をAPIが返す時に、なんらかの不具合で空のオブジェクトが返って来た場合に、
中の要素があるものとしてメソッドを実行するとnilでエラーが発生したりする。
1 2 3 4 5 6 7 |
[ {"id"=>"1", "count"=>"10"}, {"id"=>"2", "count"=>"20"}, {"id"=>"3", "count"=>"30"}, {"id"=>"4", "count"=>"40"}, {} #こいつ ] |
配列をmapメソッドでブロックごと取り出し、blank?メソッド空かどうか確認。空ならnilを返し、
配列からcompact?メソッドでnilを除外する事で、不正なオブジェクトデータを削除する事が出来る、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
array = [ {"id"=>"1", "count"=>"10"}, {"id"=>"2", "count"=>"20"}, {"id"=>"3", "count"=>"30"}, {"id"=>"4", "count"=>"40"}, {} ] #配列をmapメソッドで要素ごと取り出し、ブロックでオブジェクトの状態をチェックし、空であればnilを返すようにする。 array = array.map{|array_obj| unless array_obj.blank? array_obj end } #nilに変換された配列から、nilを削除する array = array.compact? |
1 2 3 4 5 6 7 |
#結果 array => [ {"id"=>"1", "count"=>"10"}, {"id"=>"2", "count"=>"20"}, {"id"=>"3", "count"=>"30"}, {"id"=>"4", "count"=>"40"} ] |
map/ map?
http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6
blank?
http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6
compact, compact! (Array)
http://ref.xaio.jp/ruby/classes/array/compact
1 |
Arrayオブジェクト.compact |
関連記事
http://astone.jeez.jp/%e3%80%90ruby%e3%80%91%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e9%85%8d%e5%88%97%e3%81%ab%e6%a0%bc%e7%b4%8d%e3%81%95%e3%82%8c%e3%81%a6%e3%81%84%e3%82%8b%e7%a9%ba%e3%81%ae%e3%82%aa/http://astone.jeez.jp/wp-content/uploads/2015/01/8865584540_b5307795be_c.jpghttp://astone.jeez.jp/wp-content/uploads/2015/01/8865584540_b5307795be_c-300x300.jpgProgrammingRuby,Ruby on Rails
以下の様なオブジェクト配列をAPIが返す時に、なんらかの不具合で空のオブジェクトが返って来た場合に、
中の要素があるものとしてメソッドを実行するとnilでエラーが発生したりする。
配列をmapメソッドでブロックごと取り出し、blank?メソッド空かどうか確認。空ならnilを返し、
配列からcompact?メソッドでnilを除外する事で、不正なオブジェクトデータを削除する事が出来る、
map/ map?
http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6
blank?
http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6
compact, compact! (Array)
http://ref.xaio.jp/ruby/classes/array/compact
milksoap7@gmail.comAdministratorastone.jeez.jp
コメントを残す