数字回文代码不起作用

时间:2017-10-09 08:35:20

标签: javascript palindrome

我一直在代码战中做'数字回文#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';
    }
   }

4 个答案:

答案 0 :(得分:2)

toStringNumber.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));

https://jsfiddle.net/emilvr/qkz5ypq9/

答案 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 +"";