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是一个带有单个字符串元素的数组。