Создание функции JavaScript с циклами for, которая возвращает число (количество) четных чисел, а не фактические четные числа - PullRequest
0 голосов
/ 22 октября 2019

Напишите определение функции, которая принимает последовательность чисел и возвращает количество четных чисел

Я пытался создать цикл for, который подсчитывает все четные числа

function countEvens(x){
  var allEven = [];
  for(var i = 0; i < x.length; i++){
    if(x[i] % 2 === 0){
      allEven += x.length;
    }
  }
  return allEven;
}

Я ожидаю получить только число четных чисел, поэтому, если оно равно 1,2,3,4,5, оно должно вернуть 2.

Ответы [ 2 ]

3 голосов
/ 22 октября 2019

Когда вы определяете allEven:

var allEven = [];

... вы инициализируете его как Array . Это означает, что эта строка при первом запуске:

allEven += x.length;

... совпадает с:

allEven = [] + 5

JavaScript достаточно «полезен», чтобы что-то с этим сделать. Он решает преобразовать [] в строку "", а затем преобразовать 5 в строку, в результате чего вы получите "5".

Вы захотите переосмыслить этот подход. Работа этой функции состоит в том, чтобы считать , и точно так же, как при подсчете людей, это означает, что вы хотите начать с 0:

var allEven = 0

... и затем, когда вы столкнетесь с четным, добавьтеодин к вашему счету:

allEven += 1

Это должно дать вам ваш счет.

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

Если вы ищете счетчик, попробуйте использовать счетчик и увеличивайте его в цикле.

function countEvens(x){
  var count = 0;
  for(var i = 0; i < x.length; i++){
    if(x[i] % 2 === 0){
      count++;
    }
  }
  return count;
}
...