Javascript 查找字符串中最长的单词

Javascript 查找字符串中最长的单词,javascript,Javascript,我的代码可以很好地处理字符串,比如“敏捷的棕色狐狸跳过了懒狗” 但不能使用“谷歌滚桶”这样的字符串 它说问题是“TypeErrorUndefined不是一个对象(计算'Astr[i].length')” 函数findLongestWord(str){ var Astr=str.split(“”); var t=Astr[0]。长度; var Al=应力长度; var j=0; 对于(变量i=1;i

我的代码可以很好地处理字符串,比如“敏捷的棕色狐狸跳过了懒狗”

但不能使用“谷歌滚桶”这样的字符串

它说问题是“TypeErrorUndefined不是一个对象(计算'Astr[i].length')”

函数findLongestWord(str){
var Astr=str.split(“”);
var t=Astr[0]。长度;
var Al=应力长度;
var j=0;
对于(变量i=1;ifindLongestWord(“谷歌滚桶”)您的“for”循环中的变量有问题

如您所见,分割数组并获得数组中第一个成员的长度 所以基本上你得到的是第一个单词的长度,而不是单词数

var Astr = str.split(" ");
var t = Astr[0].length;
在这里,您可以看到使用“t”(第一个单词长度)作为循环边界

for(var i =1; i < t;i++)

以下是改进功能的一种方法:

var str = 'Google do a barrel roll';

function findLongestWord(str) {
  var Astr = str.split(' ');

  if (!Astr.length) {
    throw new Error('findLongestWord(): no words in str');
  }

  var t = Astr[0].length;
  var Al = Astr.length;
  var j = 0;

  for(var i = 0; i < Al; i++)
  {
      if(t < Astr[i].length)
      {
        t = Astr[i].length;
        j = i;
      }
  }
  str = Astr[j];
  return str.length;
}

findLongestWord(str);
//=> 6

基本调试:您在收到错误时检查了
i
的值是多少吗?同样-使用
Array似乎是一个很好的例子。reduce
-
var bigWord=str.split(“”)。reduce(函数(p,c,i,a){返回p.length>c.length?p:c},“”)
在您的
for
中,您正在检查
i
t
不是数组的长度,而是第一个元素的长度。谢谢大家。我想我找到了问题所在,
I
应该是
I
@jzhangnu是的,这是关键问题。
function findLongestWord(str) {
  return str.split(' ').reduce(function(longest, cur) {
     return (cur.length > longest.length) ? cur : longest;
  }, '').length;
}

findLongestWord("Google do a barrel roll");
var str = 'Google do a barrel roll';

function findLongestWord(str) {
  var Astr = str.split(' ');

  if (!Astr.length) {
    throw new Error('findLongestWord(): no words in str');
  }

  var t = Astr[0].length;
  var Al = Astr.length;
  var j = 0;

  for(var i = 0; i < Al; i++)
  {
      if(t < Astr[i].length)
      {
        t = Astr[i].length;
        j = i;
      }
  }
  str = Astr[j];
  return str.length;
}

findLongestWord(str);
//=> 6
str.split(' ').reduce(function(longest, cur) {
  return (cur.length > longest.length) ? cur : longest;
}, '');
//=> Google
function findLongestWord(str)
 {var arr=[];
 arr=str.split(' ');
 arr=arr.sort(function(a,b)
      {
 return b.length-a.length;   /*sorting the array in decending order of 
                                        lengths of each word*/
      });
 var st=arr[0];           /* obviously the first element of the array will 
                             have longest length.*/
 return st.length;
    }
findLongestWord("Google do a barrel roll");