Javascript:写一个函数,表示returns字符串中最长的单词。使用 NO jquery

Javascript: Writing a function that returns the longest word in a string. With NO jquery used

这是我第一次在这里发帖,我这样做只是因为我到处都进行了研究。有些问题的编码类似,但它们并不是在寻找对我有帮助的正确问题。

var sentence = "The Shattuck is the best"

var longest = function(str) {
  var strArr = str.split(" ");
  for (var i = 0; i < strArr.length; i++) {
    for (var j = 0; j < strArr.length; j++) {
      if (strArr[i].length > strArr[j].length) {
        strArr.splice(j, 1);
      } else {
        j = 0
      }
    }
  }
  return strArr
};
longest(sentence);
//should return Shattuck but I get an infinite loop problem.

对于不支持reduce的浏览器尝试

var sentence = "The Shattuck is the best"

var lon=-1,len=0, longest=function(str) {
  if (str.length>0) { // make sure we have a string
    var strArr = str.split(" "); // split on space
    for (var i = 0; i < strArr.length; i++) { // loop
      if (strArr[i].length>len) { // if the new length is longer
        lon = i; // save the index 
        len=strArr[i].length; // overwrite the saved length
      }
    }
    return strArr[lon]; // return the longest
  }
};
var word = longest(sentence);
alert(word)

数组方法 reduce 是一种我会采用的有趣方法。

var sentence = "The Shattuck is the best"
var words = sentence.split(" ")

words.reduce(function(a, b) {return a.length > b.length ? a : b})
// returns "Shattuck"

您始终可以根据字长对数组进行排序,并向程序询问第一个值。

var Words = ["The", "Shattuck", "is", "the", "best"],
    sort = Words.sort(function (a, b) {
    return a.length < b.length;
});

console.log(sort);
console.log(sort[0]);