Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Compose функция (https://javascript.ru/forum/misc/77751-compose-funkciya.html)

DarkPhoenix 15.06.2019 20:44

Compose функция
 
Создать функцию compose которая выполняет композицию функций справа налево.
Задание в том что может быть неограниченное кол-во. операций. И надо написать функцию для любого кол-ва.
Я так понимаю что тут замешаны ...args. Но пока так и не осознал.

Для примера есть 2 функции.
Надо написать для них compose. А после для неограниченного кол-ва.

function division(x) {
  return x/2;
}
function negative(x) {
  return -x;
}

var r = compose (division, negative, Math.pow);
r(10, 9)

рони 15.06.2019 21:21

DarkPhoenix,
возможно, я что-то упустил ...
function division(x) {
  return x/2;
}
function negative(x) {
  return -x;
}
const compose = (...args) => (...ar) => args.reduceRight((res, fn) => [fn(...res)], ar)[0];
const r = compose (negative, division, Math.pow);
console.log(r(10, 9))

Malleys 15.06.2019 21:25

function division(x) {
	return x / 2;
}
function negative(x) {
	return -x;
}

function compose(...fs) {
	return (...xs) => fs.reduceRight((xs, f) => [f(...xs)], xs)[0];
}

var r = compose(division, negative, Math.pow);
alert(r(10, 9));


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