vmlzn
@vmlzn

Как оставить только 1 входное число?

всем привет ! у меня есть задача чтобы вступить на курс, я ее почти решила, у меня осталось два условия, доделать. вот задача: есть входная строка, в которой есть цифры, мне нужно вернуть в соответствии с ниже упомянутым.
calculateGuests('I think 5 guests') === 5
calculateGuests('Big company of 15 dudes') === 15
calculateGuests('5') === 5
calculateGuests('alone') === 'not a number'
calculateGuests('0') === 'not a number'
calculateGuests('Hello, 9.75 people') === 9
calculateGuests('There will be 7 or 9 guys') === 7
calculateGuests('hello cat walks on my keyboard ksadjfhskaj12.34kasdfhsjk') === 12



я написала такую функцию:
function calculateGuests(guestsInput) {
  let result = '';
  // let b = guestsInput.replace(/[^.+\d]/g, ' ');
  // let c = Math.trunc(b);
  // console.log(c);
  for (let i = 0; i < guestsInput.length; i++) {
    if (+guestsInput[i] > 0) {
      result += guestsInput[i];
    }
  }

  if (+result > 0) {
    return +result;
  }

  return 'not a number';
}

console.log(calculateGuests('fs 4 5'));


проблема вот в чем:
1. возвращает абсолютно все, не первое входное число.
2. проблемы с округлением числа(если в строке 9.15, должно возвращать 9)
  • Вопрос задан
  • 1059 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
+str.match(/\d+/) || 'not a number'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Ariesa
function calculateGuests(guestsInput) {
let result = '';
for (let i = 0; i < guestsInput.length; i++) {
if (+guestsInput[i] > 0) {
result += guestsInput[i];
} else if (result.length > 0) {
break;
}
return +result || 'not a number';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы