Javascript 用拆分和反转逻辑理解回文码

Javascript 用拆分和反转逻辑理解回文码,javascript,Javascript,我试图写一个回文代码,所以我使用了split和reverse方法。我下面的逻辑正确吗?我是否可以直接使用reverse方法,而不是先给出split,然后再给出reverse 如果我给==它会打印回文,就像我给===它不会打印回文一样。我是JS的初学者,我正在努力学习 var actualWord = "madam" var splittedWord = actualWord.split(); console.log("splittedWord---->" + splittedWord);

我试图写一个回文代码,所以我使用了
split
reverse
方法。我下面的逻辑正确吗?我是否可以直接使用
reverse
方法,而不是先给出
split
,然后再给出
reverse

如果我给
==
它会打印回文,就像我给
===
它不会打印回文一样。我是JS的初学者,我正在努力学习

var actualWord = "madam"
var splittedWord = actualWord.split();

console.log("splittedWord---->" + splittedWord);

var reversedWord = splittedWord.reverse();

console.log("reversedWord---->" + reversedWord);
console.log("boolean" + reversedWord === actualWord);

if (reversedWord === actualWord) {
  console.log("palindrome");
} else {
  console.log("not palindrome")
}

要使代码正确,需要做以下几件事:

  • 使用
    .Split(“”
    .Split()
  • 使用
    .join(“”)从数组中创建字符串
  • 在“布尔”行中的比较器周围加上括号,否则将在“=”之前执行“+”
var actualWord=“madam”;
var splittedWord=actualWord.split(“”);
日志(“splittedWord-->”+splittedWord.join(“”);
var reversedWord=splittedWord.reverse();
日志(“reversedWord-->”+reversedWord.join(“”);
log(“boolean-->”+(reversedWord.join(“”===actualWord));
if(reversedWord.join(“”===实际单词){
日志(“回文”);
}否则{
日志(“非回文”)
}
函数日志(str){
document.body.appendChild(document.createElement(“p”)).innerHTML=str;

}
您的逻辑有缺陷,因为
split()
没有要拆分的参数会返回原始单词,这意味着
reverse()
在处理单个元素数组时无效。您还试图检查数组是否相等,这将不起作用

要执行所需操作,您需要按
''
拆分以生成一个字符数组,然后可以
反转()
连接()
,将单词的字符反转。然后你可以比较这些词来发现原文是否是回文。试试这个:

var actualWord = "madam"
var reverseWord = actualWord.split('').reverse().join('');    
console.log(actualWord, reverseWord);

if (actualWord === reverseWord) {
    console.log(actualWord + " IS a palindrome");
} else {
    console.log(actualWord + " IS NOT a palindrome")
}

更进一步,您可以将逻辑提取到它自己的函数中,并使字符串比较不区分大小写:

console.log('madam', isPalindrome('madam'));
console.log('madame', isPalindrome('madame'));
console.log('raceCAR', isPalindrome('raceCAR'));

function isPalindrome(word) {
    var reverseWord = word.split('').reverse().join('');
    return word.toLowerCase() === reverseWord.toLowerCase();
}

==运算符将在执行任何必要的操作后进行相等性比较 类型转换。===运算符不会进行转换,因此如果 两个值的类型不同===只会返回false。它是 这种情况下,其中===将更快,并且可能返回不同的结果 比==。在所有其他情况下,性能将相同

e、 g.-

"1" == 1
true
"1" === 1
false

在您的例子中,
reversedWord
是一个数组,而
actualWord
是字符串,因此当使用
==
时,您会得到
false
,但当您使用
=
时,JS会为您进行必要的类型转换,并得到
true

您必须在反向函数之前调用split函数,因为您引用的是字符串而不是数组。

为什么要拆分?split函数通常在空格上拆分字符串。但是你的单词没有空格,所以你得到的是同一个单词。@all是我的逻辑正确的
,但实际单词是string
不完全正确;在OPs代码中,actualWord是一个带有单个字符串元素的数组。