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

第2引数のkey値とその値が第1引数に含まれていたら「true」を返すが第2引数に違うkey値があった場合は「false」を返す関数。

■使用例

var obj = {
	music :  "弦楽四重奏によるドラゴンクエスト",
	author : "すぎやまこういち",
	game : {}
}
var obj2 = {
	music :  "弦楽四重奏によるドラゴンクエスト",
}
var obj3 = {
	music :  "金管五重奏によるドラゴンクエスト",
	author : "すぎやまこういち"
}
// re = true; 
var re = _.isMatch( obj, obj2 );
// re2 = false; 
var re2 = _.isMatch( obj, obj3 );

■内部構造

  _.isMatch = function(object, attrs) {

// 第2引数の key 値の配列を作成。
    var keys = _.keys(attrs), length = keys.length;

// 第1引数 == null だったら。
    if (object == null) return !length;

// 第1引数 を Objectラッパーで包む。    
    var obj = Object(object);

// 第2引数のkey値とその値が第1引数に含まれているかを調べるforループ。   
    for (var i = 0; i < length; i++) {
      var key = keys[i];
      
// 第2引数と第1引数の key値 とその値が違うか、Objectラッパーで包まれた第1引数に key値 が含まれなかったら false を返す。
      if (attrs[key] !== obj[key] || !(key in obj)) return false;
    }
    return true;
  };

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