Задать вопрос
@ivanovdev666

Как перевернуть число в JS?

Мое решение, но не работает для последнего кейса. Проблемы появляются, если нули встречаются в середине числа. Что можно с этим сделать?

const reverseNumber = num => {
  const str = (Math.abs(num)).toString()
  let res = ''
  const isNegative = num < 0
  
  for (let i = 0; i < str.length; i++){
    const char = str[i]
    if (char !== '0') res = char + res
    else if (char === '0' && str[i + 1] && str[i + 1] !== '0') res = char + res
  }

  return Number(isNegative ? res * -1 : res)
}

console.log(reverseNumber(-456))  //  -654
console.log(reverseNumber(1000))  //  1
console.log(reverseNumber(901))  //  109
console.log(reverseNumber(50078))  //  87005
  • Вопрос задан
  • 5160 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
const reverseNumber = num =>
  num >= 0
    ? +`${num}`.split('').reverse().join('')
    : -(`${-num}`.split('').reverse().join(''))
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
reverseNumber=n=>(n<0?-1:1)*parseInt(n.toString().split('').reverse().join(''));
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const reverseNumber = num => Math.sign(num) * [...`${Math.abs(num)}`].reverse().join('');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Psixodelik
@Psixodelik
Преподаватель на Hexlet
А что такое за число получится 0001? Возвращай в виде строки.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Накидаю псевдокод.

Перевести в строку
Проверить 1 символ на минус сохранить флаг если отрицательное и урезать строку на 1 символ

Применить метод reverse
Вызвать parseInt
Если флажок минус то вернуть с минусом если нет то как есть
Ответ написан
@YaDelfinchik
Смотря какая суть задачи, но чтобы точно перевернуть число даже 1000, нужно его в строчку перевести - String(reverseNumber); и потом перевернуть, например так reverseNumber.split('').reverse().join('');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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