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|のようにする。



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


Close Menu