JavaScript для выхода из цикла рано - PullRequest
0 голосов
/ 04 октября 2018

ниже - простая функция.Это добавляет все числа в массиве и сохраняет в переменной.Проблема в том, что цикл выполняется только один раз, хотя условие для выхода из цикла не было выполнено.Я что-то здесь упускаю?

const numChecker = (...args) => {
  let x = args;
  let y;
  let i;
    for (i = 0; i < x.length - 1; i++) {
      if ((typeof x[i]) === "number") {
      y += x[i];
      }
      return y;
    }
 }

console.log(numChecker("A", "B", "C", 100, 300, 200));

1 Ответ

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

Есть 3 проблемы с вашим кодом: -

  1. Первый - let y;.
  2. Второй - i < x.length - 1.
  3. Вы делаете return y в неправильном месте.

В первом выпуске, когда вы объявляете переменную, подобную этой let y, typeof(y) не определен.Здесь вы хотите сохранить sum of numbers, поэтому переменная y должна иметь тип number.Таким образом, вы должны объявить и инициализировать его следующим образом: let y = 0;

Во втором цикле массив будет проанализирован во втором последнем элементе.x[4] в вашем случае.Таким образом, условие в цикле должно быть таким: i < x.length.

В последнем случае вы должны return y вне цикла, чтобы сумма, напечатанная на console, составляла всеnumbers в array.

Проверьте приведенный ниже фрагмент.

const numChecker = (...args) => {
  let x = args;
  let y = 0;
  let i;
  for (i = 0; i < x.length; i++) {
    if ((typeof x[i]) === "number") {
      y += x[i];
    }
  }
  return y;
}

console.log(numChecker("A", "B", "C", 100, 300, 200));

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...