Javascript reduce() 查找字符串中最短的单词
Posted
技术标签:
【中文标题】Javascript reduce() 查找字符串中最短的单词【英文标题】:Javascript reduce() to find the shortest word in a string 【发布时间】:2018-08-13 22:01:25 【问题描述】:我有一个函数可以找到字符串中最长的单词。
function findLongestWord(str)
var longest = str.split(' ').reduce((longestWord, currentWord) =>
return currentWord.length > longestWord.length ? currentWord : longestWord;
, "");
return longest;
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
我很难将其转换为最短的单词。为什么我不能将currentWord.length > longestWord.length
更改为currentWord.length < longestWord.length
?
【问题讨论】:
问题是初始值""
。你永远找不到比这更短的词了。
嗯,好的,有道理
【参考方案1】:
你需要给reduce
函数提供一个初始值,否则空字符串是最短的词:
function findShortestWord(str)
var words = str.split(' ');
var shortest = words.reduce((shortestWord, currentWord) =>
return currentWord.length < shortestWord.length ? currentWord : shortestWord;
, words[0]);
return shortest;
console.log(findShortestWord("The quick brown fox jumped over the lazy dog"));
【讨论】:
【参考方案2】:使用reduce
时,initialValue
是可选的,如果未提供,则您的第一个元素将用作initialValue
。所以,在你的情况下,你只需要删除你的""
:
function findLongestWord(str)
var longest = (typeof str == 'string'? str : '')
.split(' ').reduce((longestWord, currentWord) =>
return currentWord.length < longestWord.length ? currentWord : longestWord;
);
return longest;
console.log(findLongestWord("The quick brown fox jumped over the lazy dog")); // The
【讨论】:
值得注意的是,如果没有传递的值不是字符串(例如根本没有值、null 等),这将引发错误,因此最好包含一个测试以确保有一个参数是一个字符串(即使是一个空字符串也可以),例如var longest = (typeof str == 'string'? str : '').split(...
。 ;-)【参考方案3】:
我是这样编码的
const findLongestWord = str =>
return typeof str === 'string'
? str.split(' ').reduce((sw, lw) => lw.length < sw.length ? lw :sw)
: '';
console.log(findLongestWord('The quick brown fox jumps over the lazy dog.')); //'The'
【讨论】:
以上是关于Javascript reduce() 查找字符串中最短的单词的主要内容,如果未能解决你的问题,请参考以下文章
Javascript:使用 reduce() 查找最小值和最大值?
练习:不使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数