2013-12-18 71 views
0

請解決我的問題,我將檢查字符串列表作爲迴文,如果數組中的任何字符串是迴文,那麼它應該顯示結果爲true,結果應該是字符串值不是布爾值。我嘗試過很多次,但沒有顯示結果;見下面我的代碼: -在JS中檢查字符串(數組)的迴文列表

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/

謝謝!

回答

3

你只需要檢查,如果事情顛倒相同

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

+1,非常乾淨。 –

+0

你能提供一個小提琴嗎,這很難理解 –

+0

http://jsfiddle.net/8pLFC/ – scrblnrd3

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; 
} 
+0

你可以創建一個小提琴,所以我可以理解它將如何使用,我只是一個初學者在JS –

+1

http://jsfiddle.net/8pLFC/1/:p請不要接受這個答案,但scrblnrd3值得讚揚它。 –

+0

+ 1爲你和我心中的敬意。這麼大的想法; –