如何在 JavaScript 中的一个数组中找到字符串中最长的单词

3

可能有些尴尬,但我对JS非常陌生,在被一个BootCamp接受之前,他们要求我完成这个练习,任务是在一个数组中找到包含最长单词的字符串。

例如:['The Soviet Union', 'The Consomol', 'United States'] 应该返回 Consomol。

我已经尝试了很多时间,只看到了如何获取最长单词或最长字符串,但我的兴趣在于如何在给定的短语和数组中获取最长单词。我编写了以下代码...

function longest_string(str_ara) {
var max = str_ara[0].length;
  str_ara.map(v => max = Math.max(max, v.length));
  result = str_ara.filter(v => v.length == max);
  return result;
}

以上代码给出了数组中最长的字符串,而不是最长的单词。我想找到一种方法来找到最长的单词或与其相似的单词。谢谢。


请记得在提问时标记你所使用的编程语言,例如在这里加上 [tag:javascript]。编程语言标签是提问时最重要的标签,没有它,问题会更难被找到(对于回答者和未来的观众都是如此)。 - costaparas
3个回答

3
希望我理解问题的正确 - 如果不是,请让我知道..
如果您需要进一步解释,请告诉我。

const items = ['The Soviet Union', 'The Consomol', 'United States'];

let longestWord = '';

// Loop through every item in the array
items.forEach((item) => {

  // Let's split it by space ex. 'The Soviet Union' === ['The', 'Soviet', 'Union']
  const words = item.split(" ");
  
  // Loop through each word in the new array
  words.forEach((word) => {
    // Check if current word is longer than the one we already saved
    if (word.length > longestWord.length) {
      // If longer - let's update
      longestWord = word
    }
  });
});

// All done - let's output the longest word
console.log(longestWord)

修改:

要将其用作函数,您可以像这样操作:

const wordArray = ['The Soviet Union', 'The Consomol', 'United States'];

function extractLongestWord(items) {
  let longestWord = '';
  items.forEach((item) => {
    const words = item.split(" ");
    words.forEach((word) => {
      if (word.length > longestWord.length) {
        longestWord = word
      }
    });
  });
  
  return longestWord;
 }
 
 console.log(extractLongestWord(wordArray))


关于这个问题,它是要在给定的数组中查找最长的单词。我尝试了你的解决方案并使用console.log输出结果为“Consomol”,现在我尝试将其作为一个函数,但输出结果为Undefined。 - Luis Daniel Arciniegas Barco

1

您可以使用数组函数,例如split、flat、reduce、map

这里是一个解决方案:

const inputs = ['The Soviet Union', 'The Consomol', 'United States'];
const words = inputs.map(input => input.split(' ')).flat();
const maxLength = words.reduce((acc, cur) => acc.length > cur.length ? acc : cur, '');

console.log(maxLength);

1
const longest_string = stringArray => {
    let longestWord = "";
    stringArray.forEach(string => {
        string.split(" ").forEach(word => {
            longestWord = (word.length > longestWord.length) ? word : longestWord 
        })
    })
    return longestWord
}

const test_input = ['The Soviet Union', 'The Consomol', 'United States']
console.log(longest_string(test_input))
// outputs "Consomol"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接