Вернуть самый большой 3-значный блок из строки - JavaScript - PullRequest
1 голос
/ 22 апреля 2019

Я не понимаю, почему это возвращает ноль:

function largestOfThree (num) {
    let stringyNums = num.toString();
    let highest = 0;

    for (let i = 0; i <= stringyNums.length - 3; i++) {
        let chunk = stringyNums.slice(i, i + 3);
        console.log(chunk);
        if (chunk > highest) chunk = highest;
    }
    return highest;
}
console.log(largestOfThree(123456789));

Кажется, что chunk не присваивается highest. Я хочу присвоить новому чанку самый высокий уровень, поскольку мы перебираем stringyNums, каждый раз, когда он превышает существующий чанк highest.

В этом случае функция должна возвращать 789.

Ответы [ 5 ]

4 голосов
/ 22 апреля 2019

Вы не устанавливаете highest на chunk Изменить

if (chunk > highest) chunk = highest;

на

if (chunk > highest) highest = chunk ;
3 голосов
/ 22 апреля 2019

Это из-за этой строки

if (chunk > highest) chunk = highest;

Вы назначаете чанк как самый высокий вместо того, чтобы назначать самый высокий чанк.Просто поменяйте местами две переменные и все готово.

if (chunk > highest) highest = chunk;
2 голосов
/ 22 апреля 2019

Для справки вы можете сделать это с помощью более удобочитаемой формы однострочника (6 строчек?):

const largestOfThree = num =>
  num
  .toString()
  .match(/.{1,3}/g)
  .map(Number)
  .reduce((acc, curr) => (acc > curr ? acc : curr));

console.log(largestOfThree(123456789));
1 голос
/ 22 апреля 2019
largestOfThree(num: number): number {
    const stringyNums = num.toString();
    let highest = 0;
    for (let i = 0; i <= stringyNums.length - 3; i++) {
      let chunk = parseInt(stringyNums.slice(i, i + 3));
      if (chunk > highest) highest = chunk;
    }
    return highest;
}
1 голос
/ 22 апреля 2019

Попробуй это.Вы присваиваете chunk=highest, что неверно

function largestOfThree (num) {

    let stringyNums = num.toString();
    let highest = 0; 
    for (let i = 0; i <= stringyNums.length - 3; i++) {

        let chunk = stringyNums.slice(i, i + 3);
        console.log(chunk);
        if (chunk > highest) highest=chunk; <---the error was here

    }

    return highest;

}

console.log(largestOfThree(123456789));
...