如何创建一个检查日期是否为回文的函数?

时间:2015-02-24 22:33:18

标签: javascript

我的问题有两个部分。我正试图检查日期是否是回文。在下面的代码中,即使字符串实际上是回文,我也会不断得到"Not a palindrome"的结果。

function isPalindrome(str){
    var rev = str.reverse;
    if(str === rev){
        console.log("This is a palindrome.");
    }
    else{
        console.log("Not a palindrome");
    }
}

isPalindrome("2002");

我的问题的第二部分是:如果我希望函数接受两个参数function isPalindrome(start_date, end_date)并让它检查回文年之间的日期然后按时间顺序返回那些年份,我该怎么做?我不是要求任何人真正为我做这件事。我只是要求解释如何实现它。

提前致谢。

3 个答案:

答案 0 :(得分:0)

它可能是您正在使用的反向功能。您可以输出转速值来查看其中的内容。

我建议你使用这个:How do you reverse a string in place in JavaScript?

答案 1 :(得分:0)

我不熟悉任何人的原生javascript实现中的任何字符串reverse()函数。但是这里我写了一段时间回来做了回文事,fwiw:

String.prototype.reverse = function (){
    //Another way to reverse a string is to use Array's reverse:
    //  "this.split('').reverse().join('')"; 
    //but that's boring, and recursion is fun!
    if (this.length < 2) { return this.toString() };
    return this.slice(-1) + this.slice(0,-1).reverse();
}
String.prototype.is_palindrome = function (){
    return this.toString() === this.reverse();
}

检查字符串是否是回文。

关于你问题的第二部分,我不确定如何做到这一点。我首先要看看通过javascript的Date对象可以原生地使用什么。检查MDN。你只需要处理这些年份,所以我只是先弄清楚年份范围,然后重复一遍,检查整个过程中的回文。

答案 2 :(得分:-1)

您是先剥离非数字字符吗?

var strippedDate = str.replace(/[^\d]/g, "");
return strippedDate == strippedDate.reverse();