我才刚刚开始学习Javascript,我们的第一批作业之一是经典的check_if_palindrome函数。我不明白我的代码有什么问题。
function palindrome(str1) {
console.log(str1.split('').reverse().join(''));
console.log(str1);
if (str1 == str1.split().reverse().join('')) {
return (true)
} else {
return (false)
}
}
if (palindrome('wow442421') == true) {
console.log('YES')
} else {
console.log('NOPE');
}
答案 0 :(得分:2)
第二个''
中缺少split()
。不要重复代码,因为它容易出错,您应该使用变量保存结果并在必要时重新使用它:
function palindrome(str1) {
const reversed = str1.split('').reverse().join('');
console.log(str1, reversed);
if (str1 === reversed){
return true
} else {
return false
}
}
if (palindrome('wow442421') === true) {
console.log('YES')
} else{
console.log('NOPE');
}
此外,由于str1 === str1.split('').reverse().join('')
已经返回了布尔值,因此只需返回此值,就不必使用if/else
语句:
function palindrome(str) {
return str.split('').reverse().join('') === str;
}
if (palindrome('wow442421')) {
console.log('YES')
} else{
console.log('NOPE');
}
如果要使其更加简洁,可以执行以下操作:
const isPalindrome = str => str === [...str].reverse().join('')
console.log(isPalindrome('wow44'));
console.log(isPalindrome('Roma amoR'));
答案 1 :(得分:0)
您应该使用split('')
而不是split()
,split()
将在每个空格字符处分割,split('')
将在每个字符处分割,这就是您想要的:
function palindrome(str1) {
if (str1 == str1.split('').reverse().join('')) {
return true;
} else {
return false;
}
}
if (palindrome('wow442421') == true) {
console.log('YES')
} else {
console.log('NOPE');
}