Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно передать параметры в pipe? (https://javascript.ru/forum/dom-window/83999-kak-pravilno-peredat-parametry-v-pipe.html)

dc65k 11.05.2022 16:32

Как правильно передать параметры в pipe?
 
Всем привет. Подскажите, пожалуйста, как на основании статьи:
https://www.freecodecamp.org/news/pi...-5b04004ac937/
правильно изменить функцию pipe, чтобы можно было передавать в передаваемые функции аргументы?
console.log(pipe(getName, upperCase, getNumChars(3), reverse)(igor)); // Error


const igor = {
    name: 'igor',
}

const getName = person => person.name;

const upperCase = str => str.toUpperCase();

const get3Chars = str => str.substring(0, 3);
const getNumChars = (str, n) => {
    // console.log('str', str)
    // console.log('n', n)

    return str.substring(0, n)
}

const reverse = str => str.split('').reverse().join('');

// Solution
const pipe = (...fns) => init => fns.reduce((value, f) => f(value), init);

const fn = pipe(getName, upperCase, get3Chars, reverse);
console.log(fn(igor)); // OGI

console.log(pipe(getName, upperCase, get3Chars, reverse)(igor)); // OGI
console.log(pipe(getName, upperCase, getNumChars(3), reverse)(igor)); // Error

ksa 11.05.2022 17:03

Цитата:

Сообщение от dc65k
getNumChars(3)

str => getNumChars(str, 3)

Оно?
const igor = {
	name: 'igor',
}
const getName = person => person.name;
const upperCase = str => str.toUpperCase();
const get3Chars = str => str.substring(0, 3);
const getNumChars = (str, n) => {
	// console.log('str', str)
	// console.log('n', n)
	return str.substring(0, n)
}
const reverse = str => str.split('').reverse().join('');
// Solution
const pipe = (...fns) => init => fns.reduce((value, f) => f(value), init);
const fn = pipe(getName, upperCase, get3Chars, reverse);
console.log(fn(igor)); // OGI
console.log(pipe(getName, upperCase, get3Chars, reverse)(igor)); // OGI
console.log(pipe(getName, upperCase, str => getNumChars(str, 3), reverse)(igor)); // Error

dc65k 11.05.2022 18:06

Да, спасибо.


Часовой пояс GMT +3, время: 21:16.