我一直在代码战中做'数字回文#1'卡塔,我觉得这个代码应该有用,但是它说回文(1221)回来是假的 - 显然它应该回归真实。如果有人能看出为什么会发生这种情况我会非常感激!挑战说如果num小于0,或者不是整数,那么它应该返回'not valid'。
function palindrome(num) {
if(typeof num == 'number'){
if(Number.isInteger(num) && num>=0){
return(toString(num) === toString(num).split('').reverse().join(''));
}
else{return 'Not valid';
}
}
else { return 'Not valid';
}
}
答案 0 :(得分:2)
toString
是Number.prototype
的一种方法,因此您可以从数字中调用它:
function palindrome(num) {
if (typeof num == 'number') {
if (Number.isInteger(num) && num >= 0) {
return (num.toString() === num.toString().split('').reverse().join(''));
} else {
return 'Not valid';
}
} else {
return 'Not valid';
}
}
console.log(palindrome(500))
console.log(palindrome(505))
答案 1 :(得分:1)
您的代码存在一些问题。 你需要使用toString(),如下所示:
num.toString()
并且你也不需要两个如果检查你的条件,你可以只用1来做。
我更新了你的代码:
var a = function palindrome(num) {
if(typeof num == 'number' && Number.isInteger(num) && num>=0)
return(num.toString() === num.toString().split('').reverse().join(''));
else
return 'Not valid';
}
console.log(a(1001));
答案 2 :(得分:0)
您应该使用String而不是toString。
function palindrome(num) {
if (typeof num == 'number' && Number.isInteger(num) && num >= 0) {
return (String(num) === String(num).split('').reverse().join(''));
}
return 'Not valid';
}
答案 3 :(得分:0)
toString方法将返回toString(123456) = "[object Undefined]" . & toString(123456).split('').reverse().join('') = "]denifednU tcejbo["
,因此它失败了。将数字转换为字符串最好是将它与""连接起来,如12345 +"";