在程序开发过程中,会用到很多的库,常见的工具库比如
lodash
、ramda
等等,用起来非常的方便,为了加深理解,在了解了ramda库之后,觉得其设计在一些场景下或功能需求下,结合ramda库实现一些基本的函数组合或对某方法的理解和记录。
0x00 简单认识Ramda
在中文文档上的一句描述:“Ramda 的目标更为专注:专门为函数式编程风格而设计,更容易创建函数式 pipeline、且从不改变用户已有数据”。
“函数式编程”是一种”编程范式”(
programming paradigm
),也就是如何编写程序的方法论。它属于”结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。
而函数式编程使得我们的编程更加的“简洁、优雅”,由于其范式的思想,纯函数可理解为一个等式,每次输入相同的参数,输出的结果永远是一样的,是没有“副作用”
0x01 判断变量是否为空
/** * 判断变量是否为空,undefined、null、''、{}、[] * @param {any} param * @returns {boolean} true/false */ export const isEmptyOrNull = (val) => R.anyPass([R.isEmpty, R.isNil])(val)
0x02 找到对象数组中首个某属性是指定值的下标
/** * 找到对象数组首个是某属性的下标 * @param {string} propName * @param {string|number} propVal * @param {Array<object>} list * @returns {number} -1/number */ export const findIndexInList = (propName, propVal, list) => R.findIndex(R.propEq(propName, propVal))(list);
0x03 计算对象数组中某属性的值的和
/** * 计算对象数组中某属性的值的和 * @param {string|number} propName * @param {Array<object>} list * @returns {number} number */ export const propSum = (propName, list) => R.sum(R.pluck(propName))(list); // 或者 export const propSumV2 = (propName, list) => R.compose(R.sum, R.pluck(propName))(list); // 或者 export const propSumV3 = (propName, list) => R.pipe(R.pluck(propName), R.sum)(list); // 或者 const sum = R.reduce(R.add, 0); export const propSumV4 = (propName, list) => R.compose(sum, R.pluck(propName))(list);
0x04 逻辑条件判断
/** * 条件判断:且,这里判断一个参数是否是小于等于5且大于等于0 * @param {number} val * @returns {boolean} true/false */ export const bothSatisfy = val => R.both(R.lte(R.__, 5), R.gte(R.__, 0))(val);
0x05 未完待续…
Reference:
版权声明:《 Ramda库的常见方法使用与组合 》为DYBOY原创文章,转载请注明出处!
最后编辑:2020-8-16 17:08:04