首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是完全ramda.js等价于这段代码?

什么是完全ramda.js等价于这段代码?
EN

Stack Overflow用户
提问于 2022-09-19 08:03:09
回答 1查看 86关注 0票数 -1

我需要通过合并有效载荷对象来用列表中的某些id更新项目的创建函数。

in ramda.js way

代码语言:javascript
复制
export const updateItem = <T extends { id: I }, I>(items: T[], id: I, payload: Partial<T>) =>
  items.map(
    item => item.id === id
      ? ({ ...item, ...payload })
      : item
  )
EN

回答 1

Stack Overflow用户

发布于 2022-09-19 20:42:45

因此,首先我们要找到要更改的项的索引:

代码语言:javascript
复制
R.findIndex(R.propEq('id', id))

如果是-1,那么我们就不需要做任何事情(返回项目)。否则,我们必须通过将有效负载合并到该索引处的项来调整项目。

代码语言:javascript
复制
R.pipe(
  R.findIndex(R.propEq('id', id)), 
  R.ifElse(
    R.equals(-1), 
    R.always(R.identity), 
    R.adjust(R.__, R.mergeLeft(payload))
  )
)

最后,我们只将项应用于该管道,然后再次将项应用于管道的结果:

代码语言:javascript
复制
const updateItem = R.curry((id, payload, items) => {
  return R.converge(R.applyTo, [
    R.identity,
    R.pipe(
      R.findIndex(R.propEq('id', id)), 
      R.ifElse(
        R.equals(-1), 
        R.always(R.identity), 
        R.adjust(R.__, R.mergeLeft(payload))
      )
    )
  ])(items)
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73770224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档