2015-02-24 2 views
0

Мой вопрос состоит из двух частей. Я пытаюсь проверить, является ли дата палиндром или нет. В следующем коде я постоянно получаю результат "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) и это проверить даты между для палиндром лет, а затем вернуться в те годы в хронологическом порядке, как я могу это сделать? Я не прошу кого-нибудь на самом деле сделать это для меня. Я просто прошу объяснить, как это сделать.

Заранее спасибо.

+0

@bobdye хорошо, что совсем не полезно –

+0

В javascript нет встроенной обратной функции на строках. Где этот «обратный»? Кроме того, вам нужно будет вызвать его с помощью круглых скобок, если вы хотите, чтобы он изменил строку. 'var reverseed = mystr.reverse();' –

ответ

0

Это может быть что-то с функцией обратной функции, которую вы используете. Вы можете вывести значение rev, чтобы посмотреть, что произойдет.

Я хотел бы предложить вам использовать это: How do you reverse a string in place in JavaScript?

+0

Я не знал, что этот вопрос существует. Он ответил на мой вопрос, спасибо. –

-1

Вы зачистки не-числовые символы в первую очередь?

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

Я не знаком ни с какой строкой reverse() функции в собственной реализации javascript. Но вот то, что я написал некоторое время назад, что делает палиндром вещи, 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(); 
} 

Это проверяет строки ли палиндром.

Что касается второй части вашего вопроса, я не уверен, как это сделать с головы. Я бы начал с просмотра того, что изначально доступно через объект Date javascript. Проверьте MDN. Вы должны были бы справиться только с годами, поэтому я бы сразу определил диапазон года и повторил это, проверяя палиндромы на этом пути.