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

253
21 октября 2017, 19:29

Есть таск, надо создать функцию которая вернет массив из 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)));

Вот мой код.

Answer 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);
}
Answer 2

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

READ ALSO
добавить картинки в массив [требует правки]

добавить картинки в массив [требует правки]

Как создать массив, который содержит имена изображений в определенной папке? JavaScript

293
Не видит функцию [дубликат]

Не видит функцию [дубликат]

На данный вопрос уже ответили:

262
Узнать город по координатам Google maps

Узнать город по координатам Google maps

Имею на сайте карту с поиском, Возможно ли как то вытаскивать отдельно только имя города в котором отметились координаты на карте? Пробовал...

705