【发布时间】:2017-08-18 16:47:01
【问题描述】:
我正在尝试设置一个函数来检查单词或文本是否为回文。为此,它拆分文本,以便每个字母都是新数组的一个元素,它消除了空格并创建了反向数组。 然后它检查两个数组中相同位置的每个元素是否相等。如果不是,则返回 false,如果是,则返回 true。 这里的功能:
function palindrome(str) {
var low = str.toLowerCase();
var newArray = low.split("");
var noSpace = newArray.filter(function(val) {
return val !== " ";
});
var reverse = noSpace.reverse();
function check (a, b) {
console.log(`checking '${a}' against '${b}'`);
var partial;
var result = 1;
for (var i = 0; i < a.length; i++) {
console.log(`comparing '${a[i]}' and '${b[i]}'`);
if (a[i] !== b[i]) {
result = 0;
} else {
partial = 1;
result *= partial;
}
}
return result;
}
var result = check(noSpace, reverse);
if (result == 1) {
return true;
} else {
return false;
}
}
palindrome("r y e");
我不知道出了什么问题,但无论我将什么单词或文本传递给函数,该函数似乎都会继续返回一个真值。这有什么问题?
【问题讨论】:
-
您可能还想用您正在使用的语言名称进行标记。
-
您可能希望正确缩进您的代码。要调试您的代码,请使用调试器逐行检查它,同时检查变量。
-
仔细阅读
reversereal 的文档。 -
let isPalindrome = str.replace(/\s/g, "") === str.replace(/\s/g, "").split("").reverse().join(""); -
“女士,我是亚当”怎么样?
标签: javascript arrays palindrome