在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 相关文章推荐
基于jQuery的ajax功能实现web service的json转化
Aug 29 Javascript
jQuery load方法用法集锦
Dec 06 Javascript
js加入收藏以及使用Jquery更改透明度
Jan 26 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
解决vue打包项目后刷新404的问题
Mar 06 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
eslint 的三大通用规则详解
May 16 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 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
php array_merge下进行数组合并的代码
2008/07/22 PHP
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
javascript self对象使用详解
2016/10/18 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
微信小程序实现联动选择器
2019/02/15 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
简单介绍Python中的floor()方法
2015/05/15 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python读写配置文件操作示例
2019/07/03 Python
简述 Python 的类和对象
2020/08/21 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
python opencv肤色检测的实现示例
2020/12/21 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
临床医学专业学生的自我评价分享
2013/11/21 职场文书
贷款承诺书范文
2014/05/19 职场文书
副总经理任命书
2014/06/05 职场文书
找工作求职信
2014/07/07 职场文书