Find the Longest Word in a String
这道题的难点在于如何找出最长的单词,还是先写出万能的for循环语句实现,再考虑是否有其他方法更简洁;
代码如下:
function findLongestWord(str) {
// 请把你的代码写在这里
var a = str.split(" ");
//初始化b的值,方便与a数组中单词的长度对比
var b = 0;
for(var i = 0; i < a.length; i++){
//如果a数组中的单词长度大于b,就将该词的长度值赋给b,然后继续比较
//直到遍历整个数组,那么b的值就是数组中单词长度最大的值
if(a[i].length > b){
b = a[i].length;
}
}
return b;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
第二种方法就是运用 sort() 方法;在MDN中,是这样定义 sort() 方法:
sort() 方法接受一个比较函数compareFunction
,数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
如果 compareFunction(a, b)小于 0 ,那么 a 会被排列到 b 之前;
如果compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
如果 compareFunction(a, b)大于 0 , b 会被排列到 a 之前。
compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
所以,比较函数格式如下:
function compare(a, b) {
if (a < b ) { // 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b ) {
return 1;
}
// a must be equal to b
return 0;
}
代码如下:
function findLongestWord(str) {
// 请把你的代码写在这里
var a = str.split(" ");
//这里使用的是降序排列,也就是单词长度大的排在前面
a.sort(function(m,n){
return n.length - m.length;
})
return a[0].length;
}
和for循环的方法相比,使用sort()方法代码更简洁。
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。