首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解传感器在Ramda中的应用

了解传感器在Ramda中的应用
EN

Stack Overflow用户
提问于 2017-04-27 09:24:46
回答 1查看 2.2K关注 0票数 3

考虑到以下代码:

代码语言:javascript
复制
const objs = [
  {
    name: '1st',
    completed: false,
  },
  {
    name: '2nd',
    completed: true,
  },
  {
    name: '3rd',
    completed: true,
  },
]

const transducer = R.pipe(
  R.filter(R.propEq('completed', true)),
  R.map((obj) => {
    return {
      label: `${obj.name} (${obj.completed.toString()})`,
    }
  }),
)

const intoArray = R.into([])

console.log('-- working --')
console.log(transducer(objs))

console.log('-- not working --')
console.log(intoArray(transducer, objs))

在使用R.pipe表单时,我得到了预期的结果(数组中的两个对象都带有名称的label字段和插入到一起的已完成字段)

然而,用换能器的形式,我得到了一个空的阵列。如果我移除R.filterR.map (因此只有一个操作在管道中),我就会得到管道中只有该项的预期结果。然而,我似乎不能将这两种操作结合起来。

,我在这里错过了什么?

有此代码的代码笔可用:http://codepen.io/rodeoclash/pen/EWJmMZ?editors=1112

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 02:31:10

正如这篇文章中所指出的

由于换能器的性质,我们需要改变管道=>的组成。虽然换能器可以直接组合,但转换的执行是相反的。这意味着,无论何时对数组使用R.pipe,都会使用R.compose作为传感器,反之亦然。

这些 文章 也非常有用。还有非常酷的检查工具:兰达-调试

代码语言:javascript
复制
const transducer = R.compose(
  R.filter(R.propEq('completed', true)),
  R.map((obj) => {
    return {
      label: `${obj.name} (${obj.completed})`,
    }
  })
)

Ramda REPL中的示例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43653794

复制
相关文章

相似问题

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