Rubyでhashや配列をeach_with_indexで最初と最後の処理だけ特別な処理をする

    >

例:ハッシュからJSONフォーマットを作りたい。}直前の,を消したい。

h = {:a => "hoge", :b => "fuga", :c => "foo"}

@json = '{'
h.each_with_index do |(k, v), i|
  if i == 0
    # 最初の要素の処理
  end
  if i == h.size - 1
    # 最後の要素の処理
    @json << %("#{k}":"#{v}")
  else
    @json << %("#{k}":"#{v}",)
  end
end
@json << '}'

puts @json #=> {"a":"hoge","b":"fuga","c":"foo"}

この方法は、配列でも使える。
配列の場合は、

|(k, v), i|部分を|e, i|のようにする。


お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


関連するかもしれない記事

Rubyでstdin(標準入力)
Ruby windowsのソフトウェアを外部コマンドから開く・起動する
Ruby sinatra 使い方
Ruby hash キーが重複していた場合は2つの値を加算する
Ruby jrubyをインストールしてからGEMのパスが変わってしまった場合の対処
Rubyで配列の集合演算
Rubyでmechanizeでブログをキーワード検索して最初の投稿を取得する


Close Menu