Чтобы следовать из того, что @scott сказал, вы не хотите, чтобы вызвать побочные эффекты внутри ramda (особенно изнутри отображения Fn), но если по каким-то причинам вам нужно вы могли бы сделать что-то вроде следующее:
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
Использование @ предложение Скотта запустившего, мы можем построить appender
функцию, которая принимает ключ и значение, и вызывает formData.append
с теми. Тем не менее, для достижения бессмысленного стиля это становится довольно грязным. Это может быть немного более явным образом:
let appender = form => (v, k) => form.append(k, v);
mapObjIndexed(appender(formData))(params.data)
Это имеет дополнительное преимущество, что позволяет нам обеспечить FormData позже, поэтому пока appender
еще нечистым, он менее связан
ли вы имеете в виду 'Append (key, params.data [key]) '? –
Ramda специально не предназначен для работы с такими системами OO. Вы можете найти что-то полезное с ['invoker'] (http://ramdajs.com/docs/#invoker), но я не стал бы рассчитывать на то, что Ramda предлагает большую помощь здесь. Обратите внимание, что то, что вы пытаетесь сделать, это постоянная мутация вашего объекта, чего Рамда пытается избежать. –
Спасибо. Не могли бы вы дать некоторое представление о моем случае: я получил «params» из вызова API, и вам нужно перевести параметры с помощью объекта FormData. Как я могу изменить свой код, поэтому примените ramda правильно? – user2504831