在JavaScript中查找字符串中最长单词的三种方法(推荐)


Posted in Javascript onJanuary 18, 2021

本文基于Free Code Camp基本算法脚本“查找字符串中最长的单词”。

在此算法中,我们要查看每个单词并计算每个单词中有多少个字母。然后,比较计数以确定哪个单词的字符最多,并返回最长单词的长度。

在本文中,我将解释三种方法。首先使用FOR循环,其次使用sort()方法,第三次使用reduce()方法。

算法挑战

  • 返回提供的句子中最长单词的长度。
  • 您的回复应该是一个数字。

提供的测试用例

  • findLongestWord(“The quick brown fox jumped over the lazy dog”)返回一个数字
  • findLongestWord(“The quick brown fox jumped over the lazy dog”)返回6
  • findLongestWord(“May the force be with you”)返回5
  • findLongestWord(“Google do a barrel roll”)返回6
  • findLongestWord(“What is the average airspeed velocity of an unladen swallow”)返回8
  • findLongestWord(“What if we try a super-long word such as otorhinolaryngology”)返回19
function findLongestWord(str) {
 return str.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

1.使用FOR循环查找最长的单词

对于此解决方案,我们将使用String.prototype.split()方法

  • split()的方法通过分离串分成子串分割字符串对象到字符串数组。

我们将需要在split()方法的括号之间添加一个空格

var strSplit = “The quick brown fox jumped over the lazy dog”.split(‘ ‘);

它将输出一个由单词组成的数组:

var strSplit = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”];

如果不在括号中添加空格,则将得到以下输出:

var strSplit = 
[“T”, “h”, “e”, “ “, “q”, “u”, “i”, “c”, “k”, “ “, “b”, “r”, “o”, “w”, “n”, “ “, “f”, “o”, “x”, “ “, “j”, “u”, “m”, “p”, “e”, “d”, “ “, “o”, “v”, “e”, “r”, “ “, “t”, “h”, “e”, “ “, “l”, “a”, “z”, “y”, “ “, “d”, “o”, “g”];
function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // Step 2. Initiate a variable that will hold the length of the longest word
 var longestWord = 0;

 // Step 3. Create the FOR loop
 for(var i = 0; i < strSplit.length; i++){
 if(strSplit[i].length > longestWord){ // If strSplit[i].length is greater than the word it is compared with...
 longestWord = strSplit[i].length; // ...then longestWord takes this new value
  }
 }
 /* Here strSplit.length = 9
  For each iteration: i = ? i < strSplit.length? i++ if(strSplit[i].length > longestWord)? longestWord = strSplit[i].length
  1st iteration:  0    yes    1 if("The".length > 0)? => if(3 > 0)?  longestWord = 3
  2nd iteration:  1    yes    2 if("quick".length > 3)? => if(5 > 3)? longestWord = 5 
  3rd iteration:  2    yes    3 if("brown".length > 5)? => if(5 > 5)? longestWord = 5 
  4th iteration:  3    yes    4 if("fox".length > 5)? => if(3 > 5)?  longestWord = 5 
  5th iteration:  4    yes    5 if("jumped".length > 5)? => if(6 > 5)? longestWord = 6 
  6th iteration:  5    yes    6 if("over".length > 6)? => if(4 > 6)? longestWord = 6 
  7th iteration:  6    yes    7 if("the".length > 6)? => if(3 > 6)?  longestWord = 6
  8th iteration:  7    yes    8 if("lazy".length > 6)? => if(4 > 6)? longestWord = 6 
  9th iteration:  8    yes    9 if("dog".length > 6)? => if(3 > 6)?  longestWord = 6 
  10th iteration:  9    no    
  End of the FOR Loop*/

 //Step 4. Return the longest word
 return longestWord; // 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

没有注释:

function findLongestWord(str) {
 var strSplit = str.split(' ');
 var longestWord = 0;
 for(var i = 0; i < strSplit.length; i++){
 if(strSplit[i].length > longestWord){
 longestWord = strSplit[i].length;
  }
 }
 return longestWord;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

2.使用sort()方法找到最长的单词

对于此解决方案,我们将使用Array.prototype.sort()方法按照某种排序标准对数组进行排序,然后返回此数组的第一个元素的长度。

  • sort()的方法进行排序的阵列的代替元素并返回数组。

就我们而言,如果我们只是对数组排序

var sortArray = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”].sort();

我们将得到以下输出:

var sortArray = [“The”, “brown”, “dog”, “fox”, “jumped”, “lazy”, “over”, “quick”, “the”];

在Unicode中,数字在大写字母之前,而在小写字母之前。

我们需要按照某种排序标准对元素进行排序

[].sort(function(firstElement, secondElement) {  return secondElement.length — firstElement.length; })

比较第二个元素的长度和数组中第一个元素的长度。

function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // Step 2. Sort the elements in the array
 var longestWord = strSplit.sort(function(a, b) { 
 return b.length - a.length;
 });
 /* Sorting process
 a   b   b.length  a.length  var longestWord
 "The"  "quick"   5   3   ["quick", "The"]
 "quick" "brown"   5   5   ["quick", "brown", "The"] 
 "brown" "fox"    3   5   ["quick", "brown", "The", "fox"]
 "fox"  "jumped"   6   3   ["jumped", quick", "brown", "The", "fox"]
 "jumped" "over"    4   6   ["jumped", quick", "brown", "over", "The", "fox"]
 "over"  "the"    3   4   ["jumped", quick", "brown", "over", "The", "fox", "the"]
 "the"  "lazy"    4   3   ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the"]
 "lazy"  "dog"    3   4   ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the", "dog"]
 */
 
 // Step 3. Return the length of the first element of the array
 return longestWord[0].length; // var longestWord = ["jumped", "quick", "brown", "over", "lazy", "The", "fox", "the", "dog"];
        // longestWord[0]="jumped" => jumped".length => 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

没有注释:

function findLongestWord(str) {
 var longestWord = str.split(' ').sort(function(a, b) { return b.length - a.length; });
 return longestWord[0].length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

3.使用reduce()方法找到最长的单词

对于此解决方案,我们将使用Array.prototype.reduce()。

  • reduce()的方法应用于对一个储液器的功能和所述阵列的每一值(从左到右),以将其降低到一个值。

reduce()对数组中存在的每个元素执行一次回调函数。

您可以提供一个初始值作为要减少的第二个参数,这里我们将添加一个空字符串“”。

[].reduce(function(previousValue, currentValue) {...}, “”);
function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];

 // Step 2. Use the reduce method
 var longestWord = strSplit.reduce(function(longest, currentWord) {
 if(currentWord.length > longest.length)
  return currentWord;
 else
  return longest;
 }, "");
 
 /* Reduce process
 currentWord  longest  currentWord.length  longest.length if(currentWord.length > longest.length)? var longestWord
 "The"    ""     3      0        yes       "The"
 "quick"   "The"    5      3        yes       "quick"
 "brown"   "quick"    5      5        no       "quick"
 "fox"    "quick"    3      5        no       "quick"
 "jumped"   "quick"    6      5        yes       "jumped"
 "over"   "jumped"   4      6        no       "jumped"
 "the"    "jumped"   3      6        no       "jumped"
 "lazy"   "jumped"   4      6        no       "jumped"
 "dog"    "jumped"   3      6        no       "jumped"
 */
 
 // Step 3. Return the length of the longestWord
 return longestWord.length; // var longestWord = "jumped" 
        // longestWord.length => "jumped".length => 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

没有注释:

function findLongestWord(str) {
 var longestWord = str.split(' ').reduce(function(longest, currentWord) {
 return currentWord.length > longest.length ? currentWord : longest;
 }, "");
 return longestWord.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

到此这篇关于在JavaScript中查找字符串中最长单词的三种方法的文章就介绍到这了,更多相关js查找字符串最长单词内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript CSS菜单功能 改进版
Dec 20 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
jQuery Easyui 下拉树组件combotree
Dec 16 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
JS使用cookie实现只出现一次的广告代码效果
Apr 22 Javascript
AngularJS实现表单元素值绑定操作示例
Oct 11 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
JavaScript array常用方法代码实例详解
Sep 02 Javascript
vue-resource 拦截器interceptors使用详解
Jan 18 #Vue.js
js数组的基本使用总结
Jan 18 #Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
Jan 18 #Javascript
js加减乘除精确运算方法实例代码
Jan 17 #Javascript
Angular处理未可知异常错误的方法详解
Jan 17 #Javascript
react-native 实现购物车滑动删除效果的示例代码
Jan 15 #Javascript
vue element el-transfer增加拖拽功能
Jan 15 #Vue.js
You might like
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php使用COPY函数更新配置文件的方法
2015/06/18 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
微信小程序(订阅消息)功能
2019/10/25 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
如何将python中的List转化成dictionary
2016/08/15 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python调用win32接口进行截图的示例
2020/11/11 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
大学生求职中的自我评价
2013/10/01 职场文书
学前班教师的自我鉴定
2013/12/05 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
社区庆八一活动方案
2014/02/02 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
环卫工人慰问信
2015/02/15 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
JVM之方法返回地址详解
2022/02/28 Java/Android