#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-ять твоих функций в массиве, твоей функцией.
Комментариев нет:
Отправить комментарий