JavaScript判断回文数的4种实现方法
本文详解JavaScript中判断回文数的4种方法。涵盖字符串转换法(高阶函数、反向拼接、中心对称比较)及纯数学计算法(取模与除法反转)。文章包含完整代码示例,分析负数、尾数为0等特殊情况的处理逻辑,帮助开发者理解不同实现的性能差异与适用场景。
回文数定义与边界条件
前言
本文旨在探讨如何判断一个整数是否为回文数。所谓回文数,即正序读取(从左至右)与倒序读取(从右至左)结果完全一致的整数。
具体示例如下:
121,是回文数。 1221, 是回文数。 1234,不是回文数。 -121,也不是回文数。
在编写判断逻辑时,需考虑以下特殊边界情况:
- 0至9的一位正整数,均属于回文数。
- 非零且末尾数字为0的整数,均不是回文数。
- 所有负数均不属于回文数。
基于字符串转换的3种实现
1. 基于字符串转换的方法
1.1 利用高阶函数简化处理
核心思路:首先将数字转换为字符串A,接着将其转换为数组并执行反转操作,最后将反转后的数组重新拼接为字符串B。通过对比字符串A与字符串B是否相等,即可得出判断结果。
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if ( x < 0 ) return false
let str = '' + x
return Array.from(str).reverse().join('') === str
};
1.2 逆向遍历字符串数组
核心思路:将数字转换为字符串A,随后从后向前遍历该字符串,将遍历得到的字符依次拼接生成新的字符串B。最后比较字符串A与字符串B是否一致,从而得出结论。
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
let str = x + ''
let newStr = ''
for(let len = str.length, i = len - 1; i >= 0 ; i--) {
newStr += str[i]
}}
return newStr === str
};
1.3 以中心节点为基准,比对左右首尾字符
/**
* 以中间数为节点,判断左右两边首尾是否相等
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if ( x < 0 || (x !== 0 && x % 10 === 0)) {
return false
} else if ( 0 <= x && x < 10) {
return true
}
x = '' + x
for(let i = 0 ; i < x.length/2; i++) {
if (x[i] !== x[x.length - i - 1]) {
return false
}
}
return true
};
基于数值运算的反转判断
2. 基于数值转换的方法
2.1 通过求模获取尾数,除以10获取整数部分
核心思路:首先处理特殊边界情况(包括小于0的数、尾数为0的数、以及小于10的正整数)。随后,将整数进行反转操作,通过比较反转前后的数值是否相等来判断是否为回文整数。
具体反转逻辑:对整数执行求模运算以获取尾数,每次获取尾数后,在原累加值基础上乘以10并加上该尾数,从而逐步构建出反转后的整数。
计算求模次数的方法:将整数不断除以10,利用Math.floor()函数(返回小于或等于给定数字的最大整数)来确定循环次数。
/**
* 求模得尾数,除10得整数
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if ( x < 0 || (x !== 0 && x % 10 === 0)) {
return false
} else if ( 0 <= x && x < 10) {
return true
}
let y = x
let num = 0
while(x !== 0) {
num = x % 10 + num * 10
x = Math.floor(x / 10)
}
return y === num
};
上述内容涵盖了回文数的主要判断方法,若存在其他更优方案,欢迎补充。
总结
以上就是本文的全部内容,希望这些JavaScript回文数判断的代码示例能为读者的学习或工作提供有价值的参考,感谢支持。
什么时候该用JS构造器:与工厂模式、字面量的选择对比
2026-11-05 16:18:22
推荐几款轻量级JS照片墙开源库及对比
2026-11-05 15:56:19
JavaScript递归写法有哪些常见陷阱及避免方法
2026-11-05 14:53:38
JS数组浅拷贝与深拷贝怎么选?场景与方法总结
2026-11-05 14:41:02
p5.js 中 setup() 和 draw() 函数的执行机制详解
2026-11-05 12:32:38
