1
考慮下面的代碼:瞭解使用傳感器的Ramda
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
形式我得到預期的結果(在一個陣列的兩個對象都與名稱的標籤字段並完成場插值一起)
但是,與傳感器形式我得到一個空的數組。如果我刪除了R.filter
或R.map
(因此只有一個操作在管道中),我得到了在管道中只有該項目的預期結果。但是,我似乎並不能將這兩種操作結合起來。
我在這裏錯過了什麼?
A碼筆與該代碼可用:http://codepen.io/rodeoclash/pen/EWJmMZ?editors=1112
因此,使用傳感器似乎反轉了提供給它的功能的順序? 我的期望是在傳感器上使用'R.pipe'將會按照與使用不帶傳感器的'R.pipe'相同的順序進行操作。 – Samuel
是的,用幾個有用的鏈接更新了我的答案。 – devor
太好了,非常感謝! – Samuel