Как выполнить цикл while с функцией обратного вызова - PullRequest
0 голосов
/ 20 сентября 2019

, поэтому я пытаюсь воспроизвести более простую версию функции lodash takeWhile.Для этого мне нужно использовать функцию обратного вызова, и я предполагаю, что мне придется использовать цикл while, который я не уверен, как реализовать внутри моей функции.

Вот что я думал сделатьв большинстве случаев, но, похоже, он не работает.

const data1 = [1, 2, 5, 7, 2, -1, 2, 4, 5];

const takeUntil = function(array, callback) {
  let result = [];
  for (let i = 0; i < array.length; i++) {
    while (callback(array[i]) === false) {
      result.push(array[i]);
    }
  }
  return result;
} 

const testOne = takeUntil(data1, x => x < 0);
console.log(testOne);

ожидаемый результат - сделать строку идентичной исходной, но только до тех пор, пока обратный вызов не станет истинным, поэтому в примере это будетбыть, как только одно из чисел меньше 0.

1 Ответ

2 голосов
/ 20 сентября 2019

Ваш условный разрыв должен быть в течение, а не внутреннее время.

const data1 = [1, 2, 5, 7, 2, -1, 2, 4, 5];

const takeUntil = function(array, callback) {
  let result = [];
  for (let i = 0; i < array.length && callback(array[i]) === false; i++) {
      result.push(array[i]);
  }
  return result;
} 

const testOne = takeUntil(data1, x => x < 0);
console.log(testOne);
...