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