Javascript反转回文和空字符串的单词检查
如何反转单词并检查它是否是回文,以及是否在javascript中传递了空字符串 这是我想到的,但没有按预期工作Javascript反转回文和空字符串的单词检查,javascript,palindrome,Javascript,Palindrome,如何反转单词并检查它是否是回文,以及是否在javascript中传递了空字符串 这是我想到的,但没有按预期工作 function reverseString(str) { return str.split("").reverse().join(""); } 我假设用一个测试来运行它,下面是测试 describe("Produce the reverse order of a word: ", function () { describe("Case for en empty str
function reverseString(str) {
return str.split("").reverse().join("");
}
我假设用一个测试来运行它,下面是测试
describe("Produce the reverse order of a word: ", function () {
describe("Case for en empty string", function() {
it("should return null for empty string", function() {
expect(reverseString('')).toEqual(null);
});
});
describe("Case for palindromes", function() {
it("should return true for `anna`", function() {
expect(reverseString('anna')).toEqual(true);
});
it("should return true for `NaN`", function() {
expect(reverseString('NaN')).toEqual(true);
});
it("should return true for `civic`", function() {
expect(reverseString('civic')).toEqual(true);
});
});
describe("Case for normal words", function() {
it("should return `skoob` for `books`", function() {
expect(reverseString('books')).toEqual('skoob');
});
it("should return `nomolos` for `solomon`", function() {
expect(reverseString('solomon')).toEqual('nomolos');
});
it("should return `csim` for `misc`", function() {
expect(reverseString('misc')).toEqual('csim');
});
});
});
您正在正确地反转字符串,但是尚未捕获其他情况 测试期望给定的
'
函数应返回null
给定一个回文
tacocate
函数应返回true
前两个测试组中的测试不正确
为什么这是真的
expect(reverseString('')).toEqual(null);
还是这个
expect(reverseString('anna')).toEqual(true);
您永远不会返回null
,也不会返回true
,而是始终返回字符串。空字符串的反面是空字符串。似乎您正在考虑另一个未包含的函数,该函数可以称为isAlindrome
。其定义可以是:
function isPalindrome(s) {
return s.length ? reverseString(s) === s : null;
}
现在,在前两组的测试中,将对
reverseString
的所有调用替换为isAlindrome
,它应该可以工作。您需要类似以下内容:
function isPalindrome(str) {
if ((typeof str) === 'undefined' || str.trim().length === 0) {
return false;
}
var rev = str.split('').reverse().join('');
if (str === rev) {
return true;
}
return false;
}
您的实现会反转字符串,但需要处理其他情况。另一个问题是你的测试。您的功能应该在测试中保持一致。它不应根据测试更改其返回类型。因此,它应该始终返回布尔值或字符串。您的测试似乎有混合值。它到底是如何工作的?返回
null
是一个糟糕的api<代码>'在我看来应该返回false
。也重命名你的函数。您希望reverseString
执行除。。。正在反转字符串。。。所以用不同的名字来命名。