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

第1引数「配列(Object)」の各値に第2引数で指定した関数を適用し、結果を配列にして返す。

■使用例

var arr = [ 1 , 2 , 3 ];
var func = function( val ){
	return val * 3;
};
// re = [ 3, 6, 9 ]
var re = _.map( arr, func );

var obj = {
 one : 1,
 two : 2,
 three : 3
};
var func = function( val, key ){
	return val * 3;
};
// re = [ 3, 6, 9 ]
var re = _.map( obj, func );

■内部構造

  _.map = _.collect = function(obj, iteratee, context) {
  
// 第3引数(context)があれば this に設定する。
// 第2引数(iteratee)が関数で第3引数(context)が undefined なら第2引数(iteratee)の関数のまま。
    iteratee = cb(iteratee, context);
    
// obj が配列じゃなかったら、objのkeyの配列を抽出。
    var keys = !isArrayLike(obj) && _.keys(obj),
    
// objのlength抽出。
        length = (keys || obj).length,
        results = Array(length);
    
// objの各値に関数を適用し、結果を配列にする処理。
    for (var index = 0; index < length; index++) {
      var currentKey = keys ? keys[index] : index;
      results[index] = iteratee(obj[currentKey], currentKey, obj);
    }
    return results;
  };

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