找出字符串(可能是一句话)中最长的单词并且将其长度输出 。这个算法其实就是让我们看看字符串中有多少个词,每个词有多少个字母,然后对这些词进行比较,找出字母数最多的那个词,并且返回这个最长字符数单词的长度。
实现上面描述的功能,同样先创建一个函数,比如findLongestWord() ,并且给这个函数传入一个arr 参数,这个 arr 是一个包含多个词的字符串 。然后在函数通过以下几步来实现所需的功能:
先把字符串 arr 转为数组
将数组中的每个元素长度转换成一个新的数组
将这个数组按由小到大排序
取此数组中最后的数值,也就是最长的字符串
将这个长度值返回
JavaScript方法
在写 findLongestWord(str) 函数实现文章开头所述的功能,根据上面的实现思路,将会大致用到下面几个有关于JavaScript点:
其中 String.prototype.split()主要是用来将字符串 str 转换成数组 arr 。比如:
"May the force be with you".split(" ");
// ["May", "the", "force", "be", "with", "you"]
这里需要注意一点,在使用 split() 方法时, "" 中间得要有一个空格( " " ),不然将会转成这样的一个数组:
"May the force be with you".split("");
// ["M", "a", "y", " ", "t", "h", "e", " ", "f", "o", "r", "c", "e", " ", "b", "e", " ", "w", "i", "t", "h", " ", "y", "o", "u"]
因为我们要做的是找出字符串str="May the force be with you" 中最长的词,并且将其 length 输出来。那么我们需要的是将字符按单的词而不是单独的字母来划分。因此要特别注意代码中 split()的使用。
而其它几个都是具体写函数功能需要用的,比如for是用来做遍历的,而sort() 方法用来对数组中的元素进行排序,而且这里都将是按从小到大的升序列来排列。
reduce() 方法将数组中的每个值(从左到右)开始合并,最终返回一个值。而在这个方法中,将会调一个 callback 函数,这个函数的功能就是让我们找出数组中最大的一个值。有关于 sort() 和 reduce() 更多的介绍,可以点击这里阅读。
Math.max() 方法可以很简单的从一个数组中取出最大的那个值:
Array.prototype.max = function () {
return Math.max.apply({},this);
}
var arr = [1,45,23,3,6,2,7,234,56];
arr.max(); // 234
测试用例