условное выражение в цикле while не работает должным образом - PullRequest
0 голосов
/ 15 февраля 2019

Я даю условный тест циклу while, но он не работает.Я думаю, что это из-за оператора приращения.но я не мог понять, почему

const nums = [3, 5, 15, 7, 5];
let n, i = 0;
while ((n = nums[i]) < 10, i++ < nums.length) {
  console.log(`Number less than 10: ${n}.`);
  };

ожидается [3, 5, 7, 5]
фактический результат [3, 5, 15, 7, 5]
Я не знаю почемуВышло 15.

Я хочу знать, почему цикл while работает следующим образом.

Обновление:

Эта проблема из книги 'Изучениеjavascript 3rd 'и , оператор запятой не работает, как я думал, должен.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Если время вернется к 15, если вы исправите, для &&

будет использоваться сочетание клавиш Оператор запятой возвращает результат i++ < nums.length

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

Вы действительно хотите заглянуть в ES5 / ES6 и отфильтровать

let smallNums = [3, 5, 15, 7, 5].filter((n) => n<10)
console.log(smallNums)

То же без стрелки ES6:

let smallNums = [3, 5, 15, 7, 5].filter(function(n) { return n<10; })
console.log(smallNums)
0 голосов
/ 15 февраля 2019

Здесь.Вы должны сделать условие внутри цикла while, поскольку если условие ложно, тогда весь цикл будет прерван.

const nums = [3, 5, 15, 7, 5];
let n, i = 0;
while (i < nums.length) {
  if ((n = nums[i++]) < 10) {
    console.log(`Number less than 10: ${n}.`);
  }
};
...