反转字符串以在 JavaScript 中查找回文

Reverse string to find palindromes in JavaScript

我有两个字符串。第一个是普通字符串,第二个我想像第一个一样是一个反转的字符串,但在控制台中我没有得到逗号列出的第一个字符串的外观。我该如何解决?

普通字符串 -

尊敬的字符串 -

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); 
    }
} 

第一个 for 循环不是必需的。您不需要将 space 字符 " " 连接到数组的元素,其中变量赋值 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); 

如果你真的只是想知道一个字符串是否是回文,你可以做一些简单的事情:

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

在您的 "normal" 字符串示例中,您将 words 打印到控制台。我们先看看words是什么:var words = str.split(" ");

String.split()函数returns一个字符串数组。所以你的 "normal" 字符串实际上是一个字符串数组 (控制台输出中的括号 [] 和逗号分隔的字符串表明了这一点).

在第二个示例中,您正在记录 newString。让我们看看它来自哪里:var newString = "";

newString 是一个字符串。如果你希望它是一个像 words 这样的字符串数组,你可以用 var newString = []; 来声明它。数组不支持 += 所以 newString += words[i]; 会变成 newString.push(words[i]);


上面解释了如何让newString表现得像words,你写的代码不是在寻找回文词,而是在寻找回文句:"Bob is Bob"不是回文句(倒过来就是"boB si boB")但它可能是回文句(如果存在的话)。

感谢大家,我为这个问题写了这个解决方案。我希望这是正确的答案。

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);
    }
}
var words = " ";

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