Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_String - Fatal编程技术网

Javascript 不使用拆分方法查找字符串中最长的单词

Javascript 不使用拆分方法查找字符串中最长的单词,javascript,arrays,string,Javascript,Arrays,String,我的老师让我们尝试构建一个函数,在不使用str.split()方法的情况下查找字符串中单词的最长长度。函数应将字符串作为参数,并输出最长单词的长度 到目前为止,我已经尝试使用.push方法创建一个函数,将字符串放入数组,然后尝试将该数组分解为每个单词,找到每个子数组中每个单词的长度,然后进行比较。因为我不够聪明或经验不足,所以我的一位朋友让我尝试: > 只需使用两个“跟踪”变量。一个用于跟踪当前单词,另一个用于跟踪到目前为止看到的最长单词。我将让您考虑这些变量的初始值。接下来,只需迭代str的每

我的老师让我们尝试构建一个函数,在不使用str.split()方法的情况下查找字符串中单词的最长长度。函数应将字符串作为参数,并输出最长单词的长度

到目前为止,我已经尝试使用.push方法创建一个函数,将字符串放入数组,然后尝试将该数组分解为每个单词,找到每个子数组中每个单词的长度,然后进行比较。因为我不够聪明或经验不足,所以我的一位朋友让我尝试:

> 只需使用两个“跟踪”变量。一个用于跟踪当前单词,另一个用于跟踪到目前为止看到的最长单词。我将让您考虑这些变量的初始值。接下来,只需迭代str的每个字符(字符串与数组一样可写)即可“构建”一个单词。当你遇到空格字符或str结尾时,你知道你有一个完整的单词。你将这个单词的长度与当前最长的单词(你的另一个跟踪变量)进行比较并将两者中的较大值指定给最长单词跟踪变量。在迭代的最后,最长单词跟踪变量将包含可返回的最长单词长度。注意:在检查单词变量的长度后,需要重置该变量,因此它不会继续“构建”通过迭代的其余部分。” >

我真的不知道他是什么意思,也不知道该怎么办

到目前为止,我有:

function findLongestWordLength(str) {
    let words = []

    words.push(str);



    console.log(words)



}

findLongestWordLength("The quick brown fox jumped over the lazy dog");
我该怎么办?我已将字符串推送到数组中,但现在我的朋友给了我一个提示,我不知道该怎么做。

,添加到当前单词中。如果找到空格,请检查当前单词是否比前一个最长单词长。如果是,就储存起来。如果不是,就什么都不要做

清除当前单词并继续在字符串中移动

函数findLongestWordLength(str){
让longestWord=“”;
让当前单词=”;
//逐字移动字符串
for(设i=0;ilongestWord.length)longestWord=currentWord;//检查该单词是否最长
currentWord=”“;//重置当前单词
}否则{
currentWord+=str.charAt(i);//不在空格字符处,仍在生成当前单词
}
}
如果(currentWord>longestWord)longestWord=currentWord;//字符串结束-再次检查当前单词
返回最长的单词;
}
const longest=findLongestWordLength(“敏捷的棕色狐狸跳过了懒狗”);

console.log(最长)可能一种更短更快的方法是使用这样一个简单的正则表达式

函数findLongestWordLength(str){
var longestWord=“”;
str.replace(/\S+/g,函数(匹配){
if(match.length>longestWord.length)
最长的单词=匹配;
}
); 
返回最长单词;//.length;
}

log(findLongestWordLength(“敏捷的棕色狐狸跳过了懒狗”)
您可以使用循环遍历字符串并检查字符是否为空格。也许for…of循环更合适,因为索引不重要,所以这不适用于
findLongestWordLength(“abcedfg”)
@jro您说得对,谢谢。我已经更新了答案来解决这个问题。我也同意你的第一点,但鉴于OP仍在学习,我个人认为基本的
for
循环是最合适的。@Quantsol我相信我已经做到了。。。有什么我没有评论过的东西你不确定吗?