Несколько функций обратного вызова с несколькими аргументами - PullRequest
0 голосов
/ 01 августа 2020
function one(x){
    return x+1;
}
function two(y){
    return y+2;
}
function three(z){
    return y+3;
}
function four(k){
    return k/4;
}

function start(...array){
    
    //passing all functions in order with each element of array and prints 
    //for example
    //prints (10+1+2+3)/4 
    //prints (11+1+2+3)/4 
    //prints (12+1+2+3)/4
    //
}

start(10,11,12);

Первое решение, которое пришло мне в голову в этом вопросе, заключалось в использовании параметров отдыха и обратного вызова. Это лучший способ? Остальные параметры, передающие n временных аргументов и обратный вызов, могут вызывать функции в определенном порядке. Однако я не смог найти способ использовать функции обратного вызова в такой проблеме.

Есть ли способ использовать функции обратного вызова?

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Вы можете взять все функции в массиве и уменьшить значения.

Функция собирает все параметры в массиве.

Этот массив значений отображается с использованием метода сокращения для всех требуемых функций, и каждое значение принимается как начальное значение для уменьшения.

Наконец, собранные значения выводятся на консоль.

function one(x) { return x + 1; }
function two(y) { return y + 2; }
function three(z) { return z + 3; }
function four(k) { return k / 4; }

function start(...array) {
    array
        .map(x => [one, two, three, four].reduce((x, fn) => fn(x), x))
        .forEach(x => console.log(x));
}

start(10, 11, 12);
0 голосов
/ 01 августа 2020

Вам просто нужно вызвать функции по порядку для каждого из элементов массива.

function one(x){
    return x+1;
}
function two(y){
    return y+2;
}
function three(z){
    return z+3;
}
function four(k){
    return k/4;
}

function start(...array){
  for(let num of array){
    console.log(four(three(two(one(num)))));
  } 
    //passing all functions in order with each element of array and prints 
    //for example
    //prints (10+1+2+3)/4 
    //prints (11+1+2+3)/4 
    //prints (12+1+2+3)/4
    //
}

start(10,11,12);
0 голосов
/ 01 августа 2020

Думаю, вы ищете такое решение:

function one(x){
    return x+1;
}
function two(y){
    return y+2;
}
function three(z){
    return z+3;
}
function four(k){
    return k/4;
}

function start(...array){
    for (var item of array) {
      //           10      10+1        10+2         10+3         10/4
      //           11      11+1        11+2         11+3         11/4
      //           12      12+1        12+2         12+3         12/4
      console.log(item + one(item) + two(item) + three(item) + four(item));
    }
}

start(10,11,12);
...