2017-04-20 48 views
0

我要尋找一個功能或一組功能通過ramda執行工作。這裏是要求: -額外的JavaScript對象的某些屬性,並傳遞那些功能

我有一個對象,我想通過「管道」功能,通過它,從中提取該對象幾個參數,並通過這些參數的值的函數。

例如,

import {pipe} from 'ramda' 
const obj = { 
    a: 1, 
    b: 2, 
    c: 3, 
    d: 4 
} 

const sum = (val1, val2) => val1 + val2 

pipe(<extract a,b from obj> and pass it to sum function) ?? 

任何形式的幫助真的很感激。

感謝

回答

3

與嘗試使用pipe這個麻煩的是,它(如compose)僅通過一個參數來任何事情,但所謂的第一功能。

pipe(props(['a', 'b']), apply(sum))(obj); //=> 3 

另一種方法是使用有點Ramda特定converge功能:您可以通過使用apply,使你的函數接受單個陣列中的參數,並使用props以提取陣列解決這個

converge(sum, [prop('a'), prop('b')])(obj) //=> 3 

但是,也許比這更好的將是一個更標準lift之一:

lift(sum)(prop('a'), prop('b'))(obj); //=> 3 

你可以看到這一切在Ramda REPL

+0

這真的幫助。 – geek

相關問題