Есть таск, надо создать функцию которая вернет массив из 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)));
Вот мой код.
Можно написать проверку, является аргумент функцией или нет, и после этого соответствующим образом заполнить массив:
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);
}
Все работает, создал масив из 10-ти функций а именно 10-ять твоих функций в массиве, твоей функцией.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как создать массив, который содержит имена изображений в определенной папке? JavaScript
Имею на сайте карту с поиском, Возможно ли как то вытаскивать отдельно только имя города в котором отметились координаты на карте? Пробовал...