在JS中检查字符串(数组)列表作为回文

时间:2013-12-18 15:47:25

标签: javascript html

请解决我的问题,我要检查一个字符串列表作为回文,如果数组中的任何字符串是回文,那么它应该显示结果为true,结果应该是字符串值而不是布尔值。我曾经尝试了很多次,但没有显示结果;请参阅下面的代码: -

function checkPry()
{
    var status = new Array();
    var wordList1 = document.getElementById("tk").value;
    var wordArray = new Array();
    wordArray = wordList1.split(" "); 
    var alength = wordArray.length; 
    for(var i=0; i <= alength; i++)
    {
        var str = wordArray[i];
        var chrlength = str.length;
        var lw = chrlength - 1;
        var chk = "";
        for(j=0; j<=chrlength; j++)
        {
            if(str.charAt(j) != str.charAt((lw - j)))
            {
                chk = "false";
                break;
            }
            else
            {
                chk = "true";
            }
        }
        if (chk == "true")
        {
            status[i] = "true";
        }
        else if (chk == "false")
        {
            status[i] = "false"
        }
    }
    var displayStr = status.toString();
    document.getElementById("show").innerHTML = displayStr;
}

如果我将输入值设为[dalad radar jaijai rexem],则应将结果显示为[true,true,false,false],请帮助我;你也可以查看下面的小提琴: -

http://jsfiddle.net/yePQ4/1/

谢谢!

2 个答案:

答案 0 :(得分:4)

您只需要检查反转的内容是否相同

function reverse(s){
     return s.split("").reverse().join("");
}

function checkIsPalindrome(arr){
   var result=[];
   for(var i=0;i<arr.length;i++){
       result.push(arr[i]==reverse(arr[i]));
   }
   return result;
}

答案 1 :(得分:2)

只是为了好玩,这里是@ scrblnrd3的替代版本,它使用正则表达式来反转字符串而不是分割/连接。

function reverse(text) {
    return text.replace(/./g, function(c, i, s) { return s[s.length - 1 - i]; });
}

function checkIsPalindrome(arr) {
    var result = [];
    for (var i = 0; i < arr.length; i++) {
        result.push(arr[i] == reverse(arr[i]));
    }
    return result;
}