ut2
Version:
一个现代 JavaScript 实用工具库。[点击查看在线文档]。
44 lines (43 loc) • 1.67 kB
TypeScript
type Customizer = (objValue: any, srcValue: any, key?: number | string | symbol, object?: any, source?: any, objStack?: any[], srcStack?: any[]) => void | boolean;
/**
* 执行一个深比较,确定 `object` 是否含有和 `source` 完全相等的属性值。
*
* 注意:只有普通对象才会执行部分匹配,函数、数组不会执行部分匹配。
*
* 如果 `strictCheck=true`, 以下值不相等:
*
* 1. `0` `-0`
* 2. `typeof` 不同类型,如 `1` `Object(1)`
* 3. 无效日期对象,如 `new Date('')` `new Date('abc')`
*
* @alias module:Language.isMatch
* @since 1.4.0
* @requires module:Language.isEqual
* @param {Object} object 要检查的对象。
* @param {Object} source 属性值相匹配的对象。
* @param {Function} [customizer] 自定义比较。
* @param {boolean} [strictCheck=false] 严格比较。默认 `false`。
* @returns {boolean} 如果 `object` 匹配,返回 `true`,否则返回 `false`。
* @example
*
* const object = { a: 1, b: -0 }
*
* isMatch(object, { a: 1 }); // true
* isMatch(object, { b: 0 }); // true
*
* // 严格比较
* isMatch(object, { b: 0 }, undefined, true); // false
*
* // 自定义比较
* function customizer(objValue, srcValue){
* if(typeof objValue === 'string' && typeof srcValue === 'string'){
* return true;
* }
* }
* isMatch({ foo: 'a' }, { foo: 'b' }, customizer); // true
* isMatch({ foo: ['a'] }, { foo: ['b'] }, customizer); // true
* isMatch({ foo: 'a' }, { foo: 'b' }, customizer); // true
*
*/
declare function isMatch(object: object, source: object, customizer?: Customizer, strictCheck?: boolean): boolean;
export default isMatch;