2019-12-18
描述
传入一个 predicate
函数和一个 prop
字符串,然后使用柯里化函数将通过属性调用检查的 object
传递给 predicate。
提示
- 获取
obj
对象中的prop
值 - 将获取的值传递给已提供好的
predicate
函数 - 最终返回该函数的真假值
代码
const checkProp = (predicate, prop) => obj => !!predicate(obj[prop]);
示例
检测对象的长度是否为 4:
const lengthIs4 = checkProp(l => l === 4, 'length');
lengthIs4([]); // false
lengthIs4([1, 2, 3, 4]); // true
lengthIs4(new Set([1, 2, 3, 4])); // false (Set uses Size, not length)
检测对象 user 属性值中的 active 是否为真且 disabled 是否为假:
const session = { user: {} };
const validUserSession = checkProp(u => u.active && !u.disabled, 'user');
validUserSession(session); // false
session.user.active = true;
validUserSession(session); // true
检测对象的是否包含 length 属性:
const noLength = checkProp(l => l === undefined, 'length');
noLength([]); // false
noLength({}); // true
noLength(new Set()); // true