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

370
28 июля 2017, 04:03

Понятно, что вопрос слабенький и так себе, и решение не знать ну просто стыдно, но все же очень-очень нужна помощь.

Схема такая: в функции должно быть два аргумента - список и функция. Эту "дочернюю" функцию нужно применить ко всем элементам списка. Функция должна получить два аргумента: значение и индекс.

Додумалась только до вот этого кусочка кода. Хелп!

var list = [100, 200, 300, 400]; 
 
function map(func, list) { 
  for (var i = 0; i < list.length; i++) { 
    func(list[i]); 
  } 
}

Answer 1

Как вариант, можно сделать так. Менять объект по которому ты итерируешь - не самая лучшая идея, поэтому лучше в локальной переменной всё сделать и вернуть как результат функции. В качестве функции можешь передать что угодно, что будет применено к каждому элементу и записано в новый массив.

var list = [100, 200, 300, 400]; 
 
function map(list, func) { 
  var f = func || function(list) {}; 
 
  var result = []; 
  for (var i = 0; i < list.length; i++) { 
    result.push(f(list[i], i)); 
  } 
 
  return result; 
} 
 
function multi(item, index) { 
  return item * index; 
} 
 
function sqr(item, index) { 
  return item * item; 
} 
 
console.log(map(list, multi)); 
console.log(map(list, sqr));