這是我第一次與ramda一起玩。我試圖創建一個map函數,它自動爲數組中的每個對象添加一個鍵。將是有益的反應無狀態的功能,例如,我們可能有一個函數簽名Ramda幫助:Pointfree實現w /佔位符指示參數
({ prop1, prop2, key }) => ...
和
[{ prop1: 'prop one', prop2: 'prop two' }, {...etc}]
這裏的工作示例數組:
const mapI = R.addIndex(R.map);
const mapAddIndexedProp = R.curry((key, fn) => mapI(R.pipe(R.flip(R.assoc(key)), fn)));
const mapAddKeyProp = mapAddIndexedProp('key');
但是,看到我真正想要的是一個接受一個字符串和一個函數的函數,似乎應該有一種方法來做這樣的事情:
const mapAddIndexedProp = mapI(R.pipe(R.flip(R.assoc(<arg1>)), <arg2>));
但我找不出如何工作。任何想法將不勝感激。
或者,很可能有更清晰的方法來處理「over」或換能器。謝謝!
您是否希望將'[{first:'Alice',last:'Jones'},{first:'Bob',last:'Smith'}]'列表變成像[[first :'Alice',last:'Jones',fullName:'Alice Jones'},{first:'Bob',last:'Smith',fullName:'Bob Smith'}]'? – davidchambers
這可能是最終函數的最終目標,因爲@Scott Sauyet在addFullNames中有以下內容,但其想法是抽象爲作爲地圖變換的一部分的對象添加一個對象,並且在要調用的函數之前這個新的地圖功能。仍然不是很清楚,但基本上這將啓用調用newMapWithKey(someFn,[{...},{...}])。在我給出的例子中,調用mapAddKeyProp(someFn,[{...},{...}]將在每個對象之前添加[{key:0 ...},{key:1 ...}]傳遞給某些可能需要使用該密鑰的Fn。 –