Как написать функцию для использования в операторе forEach для добавления всех чисел в массив? - PullRequest
0 голосов
/ 21 октября 2018

У меня есть упражнение, в котором я должен написать свою собственную функцию forEach, которая принимает массив и функцию «обратного вызова», чтобы добавить все элементы в массив.Пока у меня есть это:

function forEachTest(arr, func){
    func(arr) // Simply apply the function to the array
}

Однако я не знаю, правильно ли это работает для вызова forEach.

Во-вторых, указанная функция для добавления элементов, следовательно, будет приниматьмассив и каким-то образом добавлять каждый элемент по одному, пока он не достигнет конца массива, а затем console.log (результат).

Я пытался использовать переменную для хранения значения, но это не работает, яполучить NaN в результате.

function addEach(arr) {
    var sum;
    for(i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    console.log(sum);
}

Nan происходит, когда я вызываю forEachTest (arr, addEach);

Обратите внимание, что arr - это любой массив, содержащий числа.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Как насчет этого с инициализацией вашей sum переменной с 0, потому что внутри вашей функции она изначально undefined.Таким образом, внутри вашего цикла он выполняется следующим образом: undefined=undefined+1, undefined=undefined+2 и т. Д., Который равен NaN для каждого номера вашего массива.Кроме того, я полагаю, вам не хватает return до вашего func(arr);

function forEachTest(arr, func){
     return func(arr) // Simply apply the function to the array
}

function addEach(arr) {
    var sum=0;// see here
    for(i = 0; i < arr.length; i++) {
        sum += arr[i];
        //console.log(sum += arr[i]) //for debug purpose
    }
    //console.log(sum);
    return sum;
}

console.log(forEachTest([1,2,3,4,5],addEach))
0 голосов
/ 21 октября 2018

Инициализировать переменную sum = 0.

function forEachTest(arr, func) {
  func(arr);
}

function addEach(arr) {
  var sum = 0;
  for (i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  console.log(sum);
}

forEachTest([1,2,3], addEach);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...