输入回文数

时间:2015-05-08 14:09:54

标签: javascript jquery arrays validation input

我一直试图通过数字的位置(使用i = 0j = array.length)创建一个获取数组的输入并检查它是否是回文数。

我只是不知道如何从这里继续以及我的代码出了什么问题。

这是我的功能:

function isPalindrome() {
    var input;
    var array = input.split("");

    var i = 0;
    var j = array.length;

    while (i < j) {
        if (array[i] != array[j]) {
            return false;  
        } else {
            i++;
            j--;
        }
    }

    return true;
}

I created a fiddle.

6 个答案:

答案 0 :(得分:4)

一些事情。您没有isPalindrome方法的参数。你也没有将价值传递给它。你也可以反转数组并检查它而不需要额外的循环。即:1221逆转== 1221(真),而1223逆转!= 3221(假)

查看我的fiddle.

$("#checkPalindrome").click(function () {
    // added .val() here so we get the value.
    var inp = $("#input").val();
    $("#result").html("("+isPalindrome(inp)+")");

});

// added param str
function isPalindrome(str) {
   // split the string into an array, reverse it, join it into a string again
   // then check if it's equal to the original string passed.
   return str.split('').reverse().join('') == str;
}

答案 1 :(得分:1)

好吧,所以这比我预期的要长一点,但我这样做是这样的:

$("#checkPalindrome").click(function () {
var number = $("#input").val();
$("#result").text(isPalindrome(number));

});
function isPalindrome(number) {
    return String(number) == String(number).split("").reverse().join("");
}

http://jsfiddle.net/qajzadby/11/ 爱我一些1行功能&gt; :) 还修复了你的号码检索

答案 2 :(得分:0)

首先,input中的undefined。如果它可能等于某个字符串,则看起来像这一行:

if (array[i] != array[j]) 

是罪魁祸首,因为j最初等于array.length。你应该array[j - 1]

答案 3 :(得分:0)

你的小提琴中有一些东西需要修复

  1. 您没有阅读该字段的。将此var input = $("#input")更改为var input = $("#input").val()

  2. 您没有将值传递给函数。改变这个:

    function isPalindrome() {
         var input;
    

    function isPalindrome(input) {
    
  3. 您将j设置为array.length,以便读取数组中应该为array.length-1的最后一个元素

  4. 这是一个更新的,有效的小提琴:http://jsfiddle.net/qajzadby/10/

答案 4 :(得分:0)

有些事情正在这里......

1)您没有通过某些输入调用您的函数   EG-&GT; isPalindrome(myPalindromeNumber)

2)array.length将返回te数组中元素的总数,因此您应该将其编入索引为array[i]!=array[j-1]

答案 5 :(得分:0)

/* TODO: check if a number is a פילנדום on input's content change */
$("#checkPalindrome").click(function () {
    var input = $("#input").val();
    $("#result").text(isPalindrome(input));

});

function isPalindrome(input) {

    var array = input.split("");

    var i = 0;
    var j = array.length;

    for(i=0;i < j ;i++){
        if(array[i] != array[j-i-1]){
            return false;
       }
    }

    return true;
}  

<强> DEMO