Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

как передать функцию в массив

#javascript


Есть таск, надо создать функцию которая вернет массив из n элементов заполнение в
соответствии с pattern(вторая переменная которую передают в функцию).
Так вот если передавать числа, строки и т.п. то все просто, но так же надо передать
функцию, а вот тут уже проблема.



function sequence(n, pattern) {
   let arr = new Array(n);
   arr.fill(pattern)
   return arr
}

sequence(4, arg => arg%2).forEach((func,i) => console.log(func(i)));




Вот мой код.
    


Ответы

Ответ 1



Можно написать проверку, является аргумент функцией или нет, и после этого соответствующим образом заполнить массив: function isFunction(functionToCheck) { var getType = {}; return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; } function sequence(n, pattern) { let arr = new Array(n); if (isFunction(pattern)) { for (i = 0; i < arr.length; i++) { arr[i] = pattern(i); } } else { arr.fill(pattern) } return arr } Либо реализовать более интересными способами, доступными в ES5: function sequence(n, pattern) { return Array.apply(null, {length: n}).map(Function.call, Number).map(pattern); } Или для ES6: function sequence(n, pattern) { return Array.from(Array(n).keys()).map(pattern); }

Ответ 2



Все работает, создал масив из 10-ти функций а именно 10-ять твоих функций в массиве, твоей функцией.

Комментариев нет:

Отправить комментарий