在同一函数中返回最长的单词及其长度

时间:2017-07-19 10:57:37

标签: javascript arrays function

您好我试图在相同的功能中返回最长的单词和他的长度,但到目前为止,我曾经尝试过没有成功,我能够以不同的功能返回世界和长度,但我想要的是返回两者都在同一个函数中

function longestWord(string) {
    var str = string.split(" ");
    var longest = 0;
    var word = null;
    for (var i = 0; i < str.length 1; i++) {
        if (longest < str[i].length) {
            longest = str[i].length;
            word = str[i];
        }
    }
    return word;
}

3 个答案:

答案 0 :(得分:2)

您可以使用Array.map将字符串转换为对象数组。每个对象都有单词及其长度。然后使用Array.reduce获取最长的对象。

const data = 'Some random data';

const result = data
  .split(' ')
  .map(word => ({ word, len: word.length }))
  .reduce((carry, el) => carry.len > el.len ? carry : el);
  
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

除非你做一些特别奇怪的事情,否则你不需要发送单词及其长度。由于这个单词是一个字符串,你可以稍后得到它的长度

 word.length

答案 2 :(得分:1)

可能是最简单,最短的方式。使用reducelengthmatch

&#13;
&#13;
function longestWordOf(str) {
  return str.match(/\w+/g).reduce((p, c) => p.length > c.length ? p : c);
}

var str = 'Hello stackOverlfow users, how are you all doing?';
var longestString = longestWordOf(str);
console.log('Longest word is \'' + longestString + '\' with length ' + longestString.length);
&#13;
&#13;
&#13;