Как отмечается в комментариях, на самом деле все сводится к тому, чтобы не передавать значение в функцию palindrome
и затем ничего не возвращать из него. Таким образом, это довольно быстрое решение:
function palindrome(number) {
function reverse(num) {
num = num.toString();
let reverseNum = [];
for (let i = 1; i <= num.length; i++) {
reverseNum.push(num[num.length - i]);
}
return reverseNum.join('');
}
function check(num, reverseNum) {
//is palindrome
if (num == reverseNum) {
return true;
//is not palindrome
} else {
return false;
}
}
return check(number, reverse(number))
}
console.log(palindrome(1211));
Это можно сделать с немного меньшим количеством кода, преобразовав число в массив, перевернув и затем проверив его:
const palindrome = number => `${number}` === `${number}`
.split('')
.reverse()
.join('')
console.log(palindrome(121))
console.log(palindrome(1211))
Редактировать
Чтобы объяснить дальше, как просили.
Я действительно думал о преобразовании этого в стандартные функции, чтобы попытаться сделать его немного более понятным, но я думаю, что было бы лучше объяснить, что происходит.
${number}
просто преобразует наше число в строку. Мы хотим сделать это, чтобы нам было проще преобразовать его в массив.
Мы хотим преобразовать его в массив, потому что у массивов есть метод reverse
, который как раз то, что нам нужно. Итак, чтобы получить обратный массив, мы можем использовать:
`${number}`
.split('')
.reverse()
Итак, теперь у нас есть массив, в котором символы нашего номера обращены. Теперь нам нужно привести это в форму, которую мы можем использовать для сравнения с исходным числом. Для этого мы можем вернуть его обратно в строку, используя join()
. Теперь у нас есть обратная строка с начальным номером. Теперь нам просто нужно сравнить это с начальным числом, чтобы увидеть, есть ли у нас палиндром.
Поскольку сравнивать число со строкой не совсем идеально, нам нужно преобразовать одно из них. В моем примере я преобразовал начальное число в строку, используя ${number}
.
Синтаксис стрелки - это просто сокращение для стандартной функции (хотя есть и другие отличия, которые пока не актуальны).
Поскольку используемые нами методы принимают массив и возвращают массив, мы можем связать их вместе, чтобы сделать код красивым и простым.
В итоге:
// convert our numbers to strings
`${number}` === `${number}`
// split the string into an array
.split('')
// reverse the array
.reverse()
// convert the array back to a string
.join('')
Если у вас есть какие-то конкретные вопросы, просто дайте мне знать!