each() | Underscore JS 日本語リファレンス

第2引数で指定した関数に第1引数「配列(Object)」の各値( val, index, 配列自身 )を入力して適用。

■使用例

var arr = [ 1 , 2 , 3 ];
var func = function( val ){
	console.log(val); 
};
// arr の各値がコンソールに出力される。
_.each( arr, func );

var obj = {
 one : 1,
 two : 2,
 three : 3
};
var func = function( val ){
	console.log(val); 
};
// obj の各値がコンソールに出力される。
_.each( obj, func );

■内部構造

  _.each = _.forEach = function(obj, iteratee, context) {
  	
// 第2引数が関数かどうかチェックされる。詳細は optimizeCb 関数へ
// 第3引数 = undefined で 第2引数の型が function なら iteratee = 第2引数のまま。
    iteratee = optimizeCb(iteratee, context);

    var i, length;
    
// isArrayLike(obj) は obj が 配列 か arguments の時、true。
    if (isArrayLike(obj)) {
// 配列 と arguments の時の処理。
      
// 関数に 配列の値、index値、配列自身を渡す。
      for (i = 0, length = obj.length; i < length; i++) {
        iteratee(obj[i], i, obj);
      }
    } else {
// Object の時の処理。
      
// Object の key のみの配列を抽出。
      var keys = _.keys(obj);
      
// 第2引数に Objectの値、Objectのkey、Object自身を渡す。
      for (i = 0, length = keys.length; i < length; i++) {
        iteratee(obj[keys[i]], keys[i], obj);
      }
    }
    return obj;
  };

このページのトップへ戻る