Javascript 函数在3次测试中有2次失败

Javascript 函数在3次测试中有2次失败,javascript,Javascript,我正在帮助一位朋友编写一个函数,该函数将获取一串空格分隔的单词并返回最长的单词,但我的代码在用于检查它的3个测试中失败了2次 以下是测试: describe("test for longest function functionality", function() { it("should return correct output for normal strings", function() { expect(longest("A")).toEqual("A"); exp

我正在帮助一位朋友编写一个函数,该函数将获取一串空格分隔的单词并返回最长的单词,但我的代码在用于检查它的3个测试中失败了2次

以下是测试:

describe("test for longest function functionality", function() {
  it("should return correct output for normal strings", function() {
    expect(longest("A")).toEqual("A");
    expect(longest("I love Avatar")).toEqual("Avatar");
    expect(longest("The stupidities of youth")).toEqual("stupidities");
  });

  it("should return correct output for gibberish", function() {
    expect(longest("hgdydrxtfEq Rradsc tstsa taeWwwec fgdd")).toEqual("hgdydrxtfEq");
  });

  it("should work for sentences with numbers", function() {
    expect(longest("This is a sentence with a number 7685838788")).toEqual("7685838788");
  });
});
这是我目前的解决方案:

function longest(str) {
  var longestStart = 0;
  var longestEnd = 0;
  var current = 0;
  var currentLength = 0;
  while (current < str.length) {
    if (str.charAt(current) == ' ') {
      if (currentLength > (longestEnd - longestStart)) {
        longestStart = (current - currentLength);
        longestEnd = current;
      }
      currentLength = 0;
    } else {
      currentLength++;
    }
    current++;
  }
  return str.substring(longestStart, longestEnd);
}
函数最长(str){
var longestStart=0;
var longestEnd=0;
无功电流=0;
var currentLength=0;
while(当前(longestEnd-longestStart)){
longestStart=(当前-当前长度);
longestEnd=电流;
}
currentLength=0;
}否则{
currentLength++;
}
电流++;
}
返回str.substring(longestStart、longestEnd);
}

字符串结束后,您将不进行处理。也请尝试在末尾添加此代码:

if (currentLength > (longestEnd - longestStart)) {
  longestStart = (current - currentLength);
  longestEnd = current;
}

你的代码不是最简单的;您应该使用
String.prototype.split()
来实现最容易理解的代码。

就我个人而言,我会使用如下函数:
函数longestSubstring(stringToSplit){
var arrayOfStrings=stringToSplit.split(“”);
var longestString=arrayOfStrings[0];
对于(变量i=0;i最长的子串(“aaaaaaahhello yell”)请显示您的哪些测试失败。@TatsuyukiIshi测试1和测试3为具体测试总规格:3总失败:21.对最长函数功能的测试应为预期“”等于“A”的正常字符串返回正确的输出。期望“爱”等于“阿凡达”。2.“最长函数功能测试”应该适用于数字预期为“7685838788”的句子。您的代码没有通过任何测试,但我运行了代码片段,它似乎运行良好。测试涉及数字,字符串可能是一个带有数字的句子,例如男孩有12345个玩具。它应该返回12345作为正确的一个,并且使用乱七八糟的测试例如jcads sfef rfgwrffrg它应该返回rfgwrffrg作为正确的1@thedudeabides@Wafaw123代码没有通过任何测试,因为我没有返回任何内容。如果您愿意,只需将函数中的console.log调整为实际返回语句。@Wafaw123这是因为您用于运行测试的Karma和Jasmine希望函数返回最长的字符串,但由于没有返回任何字符串,因此没有返回。如果有部分代码您不理解,请询问,因为我非常乐意详细解释发生了什么。