我正在尝试编写回文代码,因此我使用的是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")
}
答案 0 :(得分:1)
您的逻辑存在缺陷split()
,没有要拆分的参数会返回原始单词,这意味着reverse()
无效,因为您正在处理单个元素数组。您还试图检查数组是否相等,这是行不通的。
要执行您需要的操作,您需要按''
分割以生成一个字符数组,然后您可以reverse()
和join()
一起反转该字的字符。然后你可以比较这些词来发现原作是否是回文。试试这个:
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();
}
答案 1 :(得分:0)
使您的代码更正的几件事:
.split("")
而非.split()
.join("")
var actualWord = "madam";
var splittedWord = actualWord.split("");
log("splittedWord---->" + splittedWord.join(""));
var reversedWord = splittedWord.reverse();
log("reversedWord---->" + reversedWord.join(""));
log("boolean---->" + (reversedWord.join("") === actualWord));
if (reversedWord.join("") === actualWord) {
log("palindrome");
} else {
log("not palindrome")
}
function log(str) {
document.body.appendChild(document.createElement("p")).innerHTML = str;
}
答案 2 :(得分:0)
在执行任何必要操作后,==运算符将比较相等性 类型转换。 ===运算符不会进行转换,所以如果 两个值不是同一类型===只会返回false。它的 这种情况下===会更快,并可能返回不同的结果 比==。在所有其他情况下,表现将是相同的。
例如 -
"1" == 1
true
"1" === 1
false
在您的情况下,reversedWord
是一个数组,但actualWord
是字符串,因此在使用false
时获得===
,但是当您使用==
JS时为您做必要的类型转换,然后获得true
。
答案 3 :(得分:0)
你必须在反向函数之前调用split函数,因为你指的是字符串而不是数组。