jQueryのindex付きeach

jQueryのeachは便利なのでよく使います。

$.each(ary, function(){ alert($(this).val()); });

ただ、indexが欲しい時はこんな風にしてた。

var i=0;
$.each(ary, function(){
  alert(i + ' : ' + $(this).val());
  ++i;
});

しかしもっと簡潔に書けた!素敵だ♪

$.each(ary, function(i){ alert(i + ' : ' + $(this).val()); });

ちなみに$(this)だとjQueryオブジェクトになるけど、素のデータを使いたいときもある。そんな時は以下のようにする。

var ary = ['dog', 'pig', 'cat'];
$.each(ary, function(i, item){ alert(i + ' : ' + item); });


どうでもいいけど、rubyだとこんな風にかけるよ。雰囲気はよく似ています。

%w[dog pig cat].each_with_index{|item, i| puts "#{i} : #{item}"}