Javascript反转回文检查回文和空字符串

时间:2017-06-24 19:29:35

标签: javascript palindrome

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

这是我提出的但没有按预期工作的。

var Questions =  _formManager
         .Question.GetAll()
         .Include(l => l.LinkFormQuestion)
         .Where(l => l.LinkFormQuestion.Any(A => A.Form.Id == Guid.Parse("74103B08-8AE3-4DB7-8E21-110569D5D1D4")))
         .Where(l => l.language == "FR")
         .AsNoTracking()
         .Select(l => new
            {
                Question=l.Question,
                YesNo=l.YesNo,
                Slider=l.Slider,
                //Order=l.LinkFormQuestion.Where(x=>x.IdQuestion==l.Id).Select(x=>x.Order)
                //Order=l.LinkFormQuestion.Select(x=>x.Order)
         })
         .ToList();

我想在测试时运行它,这是测试。

function reverseString(str) {
    return str.split("").reverse().join("");
}

3 个答案:

答案 0 :(得分:3)

前两个测试组中的测试没有正确测试。

为什么这是真的?:

  expect(reverseString('')).toEqual(null);

还是这个?

  expect(reverseString('anna')).toEqual(true);

您永远不会返回null,也不会返回true,但始终是一个字符串。空字符串的反向是空字符串。看起来您正在考虑另一个未包含的功能,可以称为isPalindrome。它的定义可能是:

function isPalindrome(s) {
    return s.length ? reverseString(s) === s : null;
}

现在,在前两个小组的测试中,将reverseString的所有来电替换为isPalindrome,它应该有效。

答案 1 :(得分:0)

您正在正确地反转字符串,但是您还没有抓住其他情况。

测试期望给定''函数应返回null

鉴于回文tacocat,该函数应返回true

答案 2 :(得分:0)

您需要以下内容:

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;
}

您的实现会反转字符串,但需要处理其他情况。另一个问题是你的测试。您的功能应在测试中保持一致。它不应该根据测试改变其返回类型。所以,它应该总是返回布尔值或字符串。看来你的测试有不同的价值。