Это мой первый поворот с ramda. Я пытаюсь создать функцию карты, которая автоматически добавляет ключ к каждому объекту в массиве. Было бы полезно для реакции лиц без функции, например, где мы могли бы иметь функцию с подписьюСправка Рамды: реализация Pointfree с добавочными аргументами
({ 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» или transduce. Благодаря!
Вы хотите преобразовать список, например '[{first: 'Alice', last: 'Jones'}, {first: 'Bob', last: 'Smith'}]' во что-то вроде '[{first : «Алиса», последнее: «Джонс», полное имя: «Алиса Джонс»}, {первая: «Боб», последняя: «Смит», полное имя: «Боб Смит»}] '? – davidchambers
, который может быть конечной целью конечной функции, поскольку @Scott Sauyet имеет ниже в addFullNames, но идея состоит в том, чтобы абстрагировать добавление ключа к объекту как часть преобразования карты и предшествующую функции, которая будет вызвана эта новая функция отображения. Все еще не так ясно, но по существу это позволит вызывать newMapWithKey (someFn, [{...}, {...}]). В примере, который я дал, вызов mapAddKeyProp (someFn, [{...}, {...}]) добавит [{key: 0 ...}, {key: 1 ...}] к каждому объекту до переходя к someFn, которому может понадобиться использовать этот ключ. –