Когда вы вызываете sortBy
, он возвращает результаты, а не функцию.Вы можете исправить это, используя функцию со стрелкой, и вызвав функцию piped с array1
в качестве аргумента.
Примечание: у lodash нет метода _.pipe()
(он называется _.flow()
), но есть lodash /fp делает (это псевдоним _.flow()
).
const { flow, sortBy } = _;
function sort() {
let array1 = [{ value:1 }, { value:2 }, { value:3 }];
let array2 = [{ code:1 }, { code:2 }, { code:3 }];
const constructSortedArray = flow(
arr => sortBy(arr, element => element.value),
sortedArray1 => sortedArray1.concat(array2)
);
return constructSortedArray(array1);
}
console.log(sort());
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
Для пользователя _.partialRight()
будет более понятный вариант возврата функции с большинством правых параметров, уже примененных:
const { flow, partialRight, sortBy, concat } = _;
function sort() {
let array1 = [{ value:1 }, { value:2 }, { value:3 }];
let array2 = [{ code:1 }, { code:2 }, { code:3 }];
const constructSortedArray = flow(
partialRight(sortBy, element => element.value),
partialRight(concat, array2)
);
return constructSortedArray(array1);
}
console.log(sort());
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
И самым чистым способом будет пользователь lodash / fp, поскольку все функции автоматически каррируются, а параметры находятся в правильном порядке:
const { pipe, partialRight, sortBy, concat } = _;
function sort() {
let array1 = [{ value:1 }, { value:2 }, { value:3 }];
let array2 = [{ code:1 }, { code:2 }, { code:3 }];
const constructSortedArray = pipe(
sortBy(element => element.value),
partialRight(concat, [array2])
);
return constructSortedArray(array1);
}
console.log(sort());
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>