Javascript 在Ramda中,通过对象中的键将数组无点连接到字符串

Javascript 在Ramda中,通过对象中的键将数组无点连接到字符串,javascript,functional-programming,pointfree,ramda.js,Javascript,Functional Programming,Pointfree,Ramda.js,可以做点免费的吗 var joinByKey = R.curry(function(key, model){ return R.assoc(key, R.join(',' ,R.prop(key, model)), model); }); var input = { a: ['1', '2', '3'] }; var result = joinByKey("a", input); // {"a": "1,2,3"} 是的,可以这样做: const joinByKey = key =&

可以做点免费的吗

var joinByKey = R.curry(function(key, model){
    return R.assoc(key, R.join(',' ,R.prop(key, model)), model);
});

var input = { a: ['1', '2', '3'] };
var result = joinByKey("a", input); // {"a": "1,2,3"}

是的,可以这样做:

const joinByKey = key => R.over(
    R.lensProp(key),
    R.join(',')
);

const input = { a: ['1', '2', '3'] };
const result = joinByKey("a")(input); // {"a": "1,2,3"}
如果您希望未经纠正地使用它:

const joinByKey = R.curry((key, model) => R.over(
  R.lensProp(key),
  R.join(',')
)(model));

var input = { a: ['1', '2', '3'] };
joinByKey("a", input); // {"a": "1,2,3"}
第二种方法既适用于咖喱,也适用于非咖喱


我发现它比你的版本更可读,与@naomik所说的相反…

几乎每个表达式都可以用无点构图表示,但这并不意味着你应该这样做。特别是,
R.assoc
具有非常复杂的函数签名,这使得编写非常困难。我向你保证,你的特定函数的无点符号,不管它是什么,都会胡言乱语,伤害你的大脑。你的函数是可读的并且可以工作,所以只要保持这种方式就行了。很棒的解决方案!但我不能让它工作<代码>结果是一个
\u curry1
-功能它在这里工作:在
连接键(“a”,输入)之间似乎存在差异
joinByKey(“a”)(输入)
你说得对。。。我编辑了我的答案,包括了咖喱版和非咖喱版。这在我看来更具可读性。。。目标是什么?