小编Cat*_*ima的帖子

您将如何重写此multi-arg函数,最终指向自由样式?

我是Ramda和函数式编程的新手,我想知道有人将如何改进下面的代码或将其转换为自由点样式

const doc = {
  passwordRecovery: {
    requested: true,
    expiresAt: new Date(Date.now() + 1000).toISOString(),
    code: 'abc'
  }
}

const req = {
  password: '123',
  passwordRecovery: {
    code: 'abc'
  }
}

const pathCode = R.path(['passwordRecovery', 'code'])
const isValidCode = R.curry(
    (doc, req) => R.all(
        R.hasPath(['passwordRecovery', 'code'], req),
        R.pathEq(['passwordRecovery', 'requested'], true, doc),
        R.compose(R.complement(R.isNil), pathCode)(doc),
        R.equals(pathCode(req), pathCode(doc)),
        R.pipe(
            R.path(['passwordRecovery', 'expiresAt']),
            Date.parse,
            R.gte(R.__, Date.now()),
        )(doc)
    )
);

isValidCode(doc)(req)
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming ramda.js

0
推荐指数
1
解决办法
86
查看次数