2016-12-23 52 views
0

我有兩個字符串。第一個是正常的字符串,第二個我想成爲像第一個字符串的反轉字符串,但在控制檯中,我沒有看到像第一個用逗號列出的樣子。我該如何解決這個問題?JavaScirpt中的反向字符串

普通字符串 - enter image description here

崇敬串 - enter image description here

window.onload = function(){ 

inputBox =document.getElementById("myText"); 
btn = document.getElementById('sub'); 

btn.addEventListener("click",function(event){ 
event.preventDefault(); 
    findPalindromes(inputBox.value); 
}); 

    str = inputBox.value; 

    function findPalindromes(str) { 

     var words = str.split(" "); 
      for (var i = 0; i < words.length - 1; i++) { 
       words[i] += " "; 
      } 
     console.log(words); 

     var newString = ""; 
      for (var i = words.length - 1; i >= 0; i--) { 
       newString += words[i]; 
      } 
     console.log(newString); 
    } 
} 
+2

'的console.log(words.reverse());' – david

+2

「正常」 字符串實際上是一個字符串數組。如果你想要相同的輸出,你必須爲反轉的字符串創建一個數組。 ''' ''' –

+0

'words'是一個數組。 'newString'是一個字符串 – Damon

回答

5

如果你真的只是想找出一個字符串是否是迴文,你可以做這樣簡單的東西:

function isPalindrome(str) { 
    return str.toLowerCase() === str.toLowerCase().split('').reverse().join(''); 
} 
+0

是的,我想要這樣的東西!謝謝! :)但任務也包括使其與困難的方式。 – Santiya

1

第一for循環是沒有必要的。你並不需要達到數組的最後一個元素之前空格字符" "拼接到數組的元素,其中變量賦值i

var i = 0; 

和條件

i < words.length - 1; 

停止。

var newString = ""; 
for (var i = words.length - 1; i >= 0; i--) { 
    newString += words[i] + " "; 
} 
console.log(newString); 
+0

是的,通常我不需要第一個循環,但是我使用它,因爲在任務中,我將按字典順序比較兩個字符串數組,並且我必須提取出這些相同的單詞,例如exe,abba,lamal。 – Santiya

+0

謝謝,無論如何! :) – Santiya

+0

連接空格字符'「」'後,這些單詞會如何相同? – guest271314

1

在你的「正常」的字符串,例如,要打印words到控制檯。我們先來看看words是:var words = str.split(" ");

String.split()函數返回一個字符串數組。所以你的「正常」字符串實際上是一串字符串(在控制檯輸出中括號爲[]和逗號分隔的字符串表示這個)

在第二個示例中,您正在記錄newString。讓我們看看它來自哪裏:var newString = "";

newString是一個字符串。如果你想要它是一個像words這樣的字符串數組,你可以用var newString = [];來聲明它。陣列不支持+=所以newString += words[i];將成爲newString.push(words[i]);


上面介紹瞭如何獲取newString表現得像words,你寫的是不是找一個迴文詞的代碼,而是一個迴文一句:「鮑勃是鮑勃「不是迴文(顛倒它是」boB si boB「),但它可能是一個迴文句子(如果存在這樣的事情)。

+0

是的,確切地說。我不知道是否存在這樣的事情,但它必須在文本或句子中進行搜索和比較。 – Santiya

+0

謝謝你的回答! – Santiya

0

謝謝大家,我爲這個問題寫了這個解決方案。我希望這是正確的答案。

window.onload = function(){ 

inputBox = document.getElementById("myText"); 
btn = document.getElementById('sub'); 

btn.addEventListener("click",function(event){ 
event.preventDefault(); 
    findPalindromes(inputBox.value); 
}); 

    str = inputBox.value; 

    function findPalindromes(str) { 

     var words = str.split(" "), 
      newString = []; 

     for (var i = 0; i < words.length - 1; i++) { 
      if ((words[i] === words[i].split('').reverse().join('')) === true) { 
       newString.push(words[i]); 
      } 
     } 
     console.log(newString); 
    } 
} 
-1
var words = " "; 

function reverse_arr(arr){ 
    var i = arr.length - 1; 
    while(i >= 0){ 
     words += a[i] + " "; 
     i--; 
    } 
    return words; 
} 
+1

雖然此代碼可能會回答問題,但提供有關如何解決問題和/或解決問題原因的其他上下文會提高答案的長期價值。 – Badacadabra