В качестве альтернативы наматывается цепным разворачивать модель (ничего плохого с ним, но альтернативы всегда интересно), есть другой способ проверить.
Попробуйте использовать _.flow
.
Идея состоит в том, что каждая функция внутри flow
получит в качестве входных данных результат предыдущего, что именно то, что вам нужно. Пример, учитывая эти данные:
var foundUser = {
charData: []
};
var rows = [{ok: 1, blah: 'nope'}];
Использование Lodash FP
мы можем передать данные в качестве последнего аргумента. Эта функция наряду с автоматическим каррированием каждого метода в Lodash/fp облегчает нашу жизнь при составлении функций.Это означает, что мы можем иметь этот лаконичный и выразительный код:
_.flow(
_.assign(rows[0]),
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
Используя стандартную версию Lodash мы должны Карри этих функций сам, используя _.partial
, и код, безусловно, выглядит менее лаконичен, но это еще можно сделать так:
_.flow(
_.partialRight(_.assign, rows[0]),
_.partialRight(_.omit, 'blah')
)(foundUser);
// >> {"charData":[],"ok": 1}
Большое преимущество использования потока, а не цепочки является то, что вы можете легко смешивать методы Lodash с собственных функций, так - как сказала - все они нуждаются дзя данные й в качестве входных данных и данные в качестве вывода, и ничего больше:
const yourFunction = d => ({ ...d, yourProp: 4 });
_.flow(
_.assign(rows[0]),
yourFunction,
_.omit('blah')
)(foundUser);
// >> {"charData":[],"ok": 1, yourProp: 4}
Это делает функцию композиции намного проще и более гибкой и, возможно, будет, естественно, приведет к более выразительной коде.
Еще одно примечание. Если вы устанавливаете и импортируете только те методы Lodash, которые вы используете, вам нужно будет добавить только пакет flow
, а не всю библиотеку Lodash, как это было бы с цепочкой.
npm i --save lodash.flow
Vs
npm i --save lodash
Возможно незначительное преимущество во многих реальных приложениях, где имея полную сборку Lodash не является проблемой, и, возможно, легче поддерживать в актуальном состоянии, но очень удобно в случае, вы пишете библиотеку или скрипт, который будет распространяться для использования в качестве стороннего инструмента. В этом случае вы сможете снизить свой размер снизу по размеру.
Lodash методы документы:
Две статьи стоит проверить:
NB - название второй статьи немного резок на мой взгляд, но не пропустить его, содержание действительно очень информативен.
Несколько других вещей, чтобы отметить:
В Lodash/FPA Поток псевдонимами, как _.pipe
, так что вы можете выбрать в зависимости от того вы предпочитаете.
Вы также можете использовать _.flowRight
(или его псевдоним fp
_.compose
), если вы предпочитаете справа налево композиции, как видно в Ramda's compose.
Пример:
_.flow(
_.assign(rows[0]), // #1st to execute
yourFunction, // #2
_.omit('blah'), // #3
)(foundUser);
// is the same as...
_.flowRight(
_.omit('blah'), // #3rd to execute
yourFunction, // #2
_.assign(rows[0]), // #1
)(foundUser);
https://lodash.com/docs#_ – zerkms
https://lodash.com/docs#chain –