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

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

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