Итак, в этой статье я собираюсь показать вам, как можно обратить целое число. Прежде всего позвольте мне привести несколько примеров того, как должна работать функция. Например, если мы передаем ему 762, он должен вернуть 267. Если мы передаем -1337, он должен возвращать -7331. Если мы передаем ему 500, он должен избавиться от нулей и просто вернуть 5, а не 005.

Итак, давайте посмотрим на код:

function reverseInt(n) {
  const isNegative = Math.sign(n) === -1;
  let reversedStr = n
     .toString()
     .split('')
     .reduce((prev, curr) => {
       return curr + prev;
     }, '');
  return !isNegative ? parseInt(reversedStr) : 0 -       parseInt(reversedStr);
}

Итак, здесь мы сначала проверяем, является ли полученное число отрицательным, используя Math.sign(). Math.sign() вернет -1, если число отрицательное, и 1, если число положительное. Затем мы превращаем число в строку и переворачиваем его, используя один из методов из предыдущего сообщения в блоге.

Причина хранения отрицательного числа в переменной заключается в том, что -1337 превратится в 7331- при его изменении. Когда мы затем используем parseInt, мы получим положительное число, а не -7731, как мы хотим. Поэтому при возврате числа мы проверяем, было ли оно отрицательным или нет. Если бы это было так, мы просто берем 0 минус положительное значение, полученное при разборе перевернутой строки.

Однако мы можем сделать этот вид красивее..

Помните, что Math.sign() возвращал -1 для отрицательного значения и 1 для положительного? Давайте использовать это!

function reverseIntTwo(n) {
let reversedStr = n
  .toString()
  .split('')
  .reduce((prev, curr) => {
    return curr + prev;
  }, '');
return parseInt(reversedStr) * Math.sign(n);
}

Здесь мы используем наш старый добрый трюк с обращением строк, а затем анализируем его обратно в число. Однако при его возврате мы используем Math.sign с исходным значением. Если это положительное число, мы просто вернем число * 1, что не будет иметь никакого значения. Однако, поскольку наше преобразование строки плохо сочетается с функцией parseInt, поскольку наш знак минус находится в конце, мы используем Math.sign() для умножения положительного числа на -1, если исходный ввод был отрицательным. Там за -1337 вернется -7331. Именно так, как мы хотим!

Надеюсь, вам понравилась эта статья и вы узнали что-то новое :)