2016-12-23 3 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 = [];으로 선언하십시오. 배열은 위의 words처럼 당신이 회문 단어를 찾고되지 작성한 코드, 오히려 회문 문장을 행동 newString를 얻을하는 방법을 설명 += 그렇게 newString += words[i];newString.push(words[i]);


이 될 것입니다 지원하지 않습니다 " 밥은 밥이다 "는 회문이 아니며 ("boB si boB "가 뒤집 혔음) Palindrome 문장이 될 수 있습니다 (그러한 것이 존재하는 경우).

+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