第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;
};