Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

功能 - 属性检测

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

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步