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中的map和reduce

练习:不使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数

JavaScript ES6 数组新方法 学习随笔

在 Python 中使用 Reduce 函数查找阶乘

在Python中使用Reduce函数来查找因子