【发布时间】:2020-02-26 21:23:55
【问题描述】:
我刚刚开始探索 Ramda 库并遇到了一些问题。
假设我们有一个函数,它将字符串和字符串列表作为参数,如果给定的字符串在列表中,则返回 true。在第 4 行,我想记录otherList 中不包含在list 中的第一个元素。
const isInList = R.curry((name: string, list: string[]) => list.some(elem => elem === name))
const list = ['a', 'b', 'c']
const otherList = ['a', 'b', 'd', 'c']
console.log(otherList.find(!isInList(R.__, list)))
我找不到可以反转给定函数的逻辑结果的 Ramda 函数。
如果它存在,它看起来像这样:
const not = (func: (...args: any) => boolean) => (...args: any) => !func(args)
然后我的目标可以归档为:
console.log(otherList.find(not(isInList(R.__, list)))
Ramda 有这样的功能吗?
【问题讨论】:
-
是的,你发现它是
R.complement。函数R.not用于更简单的事情:采用逻辑not 的布尔值(或者实际上是任何false-y/truth-yJS 值。)
标签: javascript typescript functional-programming ramda.js