Выполнять функции в массиве с параметрами - PullRequest
0 голосов
/ 05 июня 2019

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

let board;
let hand;

const HandCheckers = [
    CheckForRoyalFlush(board, hand),
    CheckForStraightFlush(board, hand),
    CheckForQuads(board, hand),
    CheckForFullHouse(board, hand),
    CheckForFlush(board, hand),
    CheckForTrips(board, hand),
    CheckForPairs(board, hand),
    CheckForHighCard(board, hand),
];

for (let x = 0; x < HandCheckers.length; x ++) {
       HandCheckers[x](board, hand);
}

Однако этот код не работает, что вызывает у меня следующую проблему: ReferenceError: плата не определена

Как я могу вызвать такие функции из массива с параметрами?

Ура!

Ответы [ 3 ]

4 голосов
/ 05 июня 2019

Прямо сейчас вы выполняете функции, когда объявляете их в массиве.Если вы хотите просто сохранить функцию для последующего выполнения в массиве, не используйте ().Если вы хотите, чтобы функция выполнялась со значением board и hand в тот момент, когда она была помещена в массив, а не во время итерации по массиву, используйте:

let HandCheckers = [
  CheckForRoyalFlush.bind(null, board, hand)
];
HandCheckers[0]();
1 голос
/ 05 июня 2019

Если вы хотите перебрать массив функций и передать параметры , сохраните только ссылку на функцию. Затем вызовите их с параметрами, как вы делаете:

let board;
let hand;

const HandCheckers = [
    CheckForRoyalFlush,
    CheckForStraightFlush,
    /* ... */
]

// or use `HandCheckers.forEach(f => f(board, hand))`
for (let x = 0; x < HandCheckers.length; x ++) {
       HandCheckers[x](board, hand);
}
0 голосов
/ 05 июня 2019

Попробуйте это:

let board = 7;
let hand = 2;

const HandCheckers = [
    function CheckForRoyalFlush(board, hand){return board+hand},
    function CheckForStraightFlush(board, hand){return board*hand}
];

for (let x = 0; x < HandCheckers.length; x ++) {
    console.log(HandCheckers[x](board, hand));  
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...