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