我是Ramda的新手。我可以知道如何使用Ramda翻译下面的代码 我发现了一些函数,如keys,keysIn,但我不知道如何应用它们。 感谢。
const params = {
data: {
a: 'aaa',
b: 'bbb',
c: 'ccc',
}
}
let formData = new FormData();
for (let key in params.data) {
formData.append(key, params.data.key);
}
答案 0 :(得分:1)
要了解@scott所说的内容,你真的不想在ramda中引起副作用(特别是在地图fn中),但如果由于某种原因你需要你可以做类似以下的事情: / p>
const params = {
data: {
a: 'aaa',
b: 'bbb',
c: 'ccc',
}
}
let formData = new FormData();
let appender = flip(invoker(2, 'append'))(R.__, R.__, formData)
mapObjIndexed(appender)(params.data)
formData.get('a') === 'aaa' // -> true
使用@ scott的invoker建议,我们可以构建一个appender
函数,它接受一个键和一个值,并用这些函数调用formData.append
。为了实现无点风格,它最终会变得非常混乱。它可以更加明确如下:
let appender = form => (v, k) => form.append(k, v);
mapObjIndexed(appender(formData))(params.data)
这有一个额外的好处,即允许我们稍后提供formData,所以虽然appender
仍然不纯,但它的耦合度较低