【问题标题】:Javascript reduce() to find the shortest word in a stringJavascript reduce() 查找字符串中最短的单词
【发布时间】: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

【问题讨论】:

  • 问题是初始值""。你永远找不到比这更短的词了。
  • 嗯,好的,有道理

标签: javascript arrays ecmascript-6 reduce


【解决方案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'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      相关资源
      最近更新 更多