Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript反转回文和空字符串的单词检查_Javascript_Palindrome - Fatal编程技术网

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

如何反转单词并检查它是否是回文,以及是否在javascript中传递了空字符串

这是我想到的,但没有按预期工作

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
执行除。。。正在反转字符串。。。所以用不同的名字来命名。