第1引数から第2引数以降で指定したkey値とその値で構成されたObjectを返す。
■使用例
var obj = {
works : "飛行夢",
works2 : "遠い音楽",
works3 : "私は羊",
works4 : "桜",
works5 : "moon years"
};
// re = { works2: "遠い音楽", works5: "moon years" };
var re = _.pick( obj, "works2", "works5" );
■内部構造
_.pick = function(object, oiteratee, context) {
var result = {}, obj = object, iteratee, keys;
// 第1引数が null だったら
if (obj == null) return result;
// 第2引数が関数だったら
if (_.isFunction(oiteratee)) {
// 第1引数のkey値をまとめた配列を作成。
keys = _.allKeys(obj);
// 第2引数が関数で context = undefined ならそのまま。
iteratee = optimizeCb(oiteratee, context);
} else {
// 第2引数以降が配列としてまとめられる。
keys = flatten(arguments, false, false, 1);
// 受け取った「Object」に受け取ったkey値があるかの真偽値を返す関数。
iteratee = function(value, key, obj) { return key in obj; };
// 第1引数をオブジェクトラッパーで包む。
obj = Object(obj);
}
// 第2引数で指定されたkey値(か関数)とその値で構成されたObjectを作成するforループ。
for (var i = 0, length = keys.length; i < length; i++) {
var key = keys[i];
var value = obj[key];
if (iteratee(value, key, obj)) result[key] = value;
}
// 結果のObjectを返す。
return result;
};