Не могу изменить цикл for на forEach - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь изменить это:

const removeElements = (arr, callback) => {
  for(var i = 0; i < arr.length; i++){
    callback(arr[i], arr);
  }
  return arr;
};

Для forEach, как это:

const removeWithForEach = (arr, callback) => {
  arr.forEach(callback(arr.value, arr));
};

Но это не работает. Ребята, не могли бы вы помочь?

Ответы [ 2 ]

4 голосов
/ 21 октября 2019

В данный момент вы вызываете callback немедленно, до того, как будет вызван forEach. Передайте функцию ссылка в forEach вместо:

const removeWithForEach = (arr, callback) => {
  arr.forEach((value) => {
    callback(value, arr);
  });
  return arr;
};

(хотя более разумно было бы просто использовать Array.prototype.forEach вместо removeWithForEach)

1 голос
/ 21 октября 2019

Почему бы не изменить подпись callback на

const callback = (element, index, array) => { /* code */ };
//                         ^^^^^^ add this parameter

и использовать обратный вызов напрямую ind Array#forEach

const removeWithForEach = (arr, callback) => arr.forEach(callback);
...