You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
791 B
32 lines
791 B
var keys = require('./keys')
|
|
var findIndexOf = require('./findIndexOf')
|
|
var isEqual = require('./isEqual')
|
|
|
|
var some = require('./some')
|
|
var includeArrays = require('./includeArrays')
|
|
|
|
/**
|
|
* 判断属性中的键和值是否包含在对象中
|
|
*
|
|
* @param {Object/Array} obj 对象
|
|
* @param {Object} source 值
|
|
* @return {Boolean}
|
|
*/
|
|
function isMatch (obj, source) {
|
|
var objKeys = keys(obj)
|
|
var sourceKeys = keys(source)
|
|
if (sourceKeys.length) {
|
|
if (includeArrays(objKeys, sourceKeys)) {
|
|
return some(sourceKeys, function (key2) {
|
|
return findIndexOf(objKeys, function (key1) {
|
|
return key1 === key2 && isEqual(obj[key1], source[key2])
|
|
}) > -1
|
|
})
|
|
}
|
|
} else {
|
|
return true
|
|
}
|
|
return isEqual(obj, source)
|
|
}
|
|
|
|
module.exports = isMatch
|
|
|