找到数组中最短的单词

问题描述 投票:0回答:6

我想获得数组中最短的单词。 这会返回第一个单词“bil”,即使“ei”是最短的。 我如何定义一个单词比其他单词短?

const words= ['bil', 'plante', 'kaffe', 'bog', 'ei', 'planetarium'];

function getShortestWord() {
  for(let i = 0; i < words.length; i++) {
    const strSplit = words[i].split('');
    let lengthOfWord = strSplit.length;

    if(strSplit[i].length < lengthOfWord) {
      lengthOfWord = strSplit[i].length
    }
    return lengthOfWord
   }
}
getShortestWord()
javascript
6个回答
3
投票

按数组长度排序。

const words = ["bil", "plante", "kaffe", "bog", "ei", "planetarium"];
let ret = words.sort((x, y) => x.length - y.length);
console.log(ret[0]);


2
投票

const wordsArray = [
  'bil', 
  'plante',
  'kaffe',
  'bog',
  'ei',
  'planetarium'
];

function shortestWordInArray(words){
  let result = "";
  words.forEach(
    word => {
      word.length < result.length ?
        result = word : null
    }
  )
  console.log(result)
  return result;
}

shortestWordInArray(wordsArray)

这将是我的方法,迭代项目并存储更长的内容。


1
投票

您需要修复 return 和 split 语句。您使用的是数组,因此不需要 split 语句。

function getShortestWord() {
  if(words == null || words.length < 1) { 
    return words; // handling empty array
  }

  let minLengthWord = words[0];
  for(let i = 1; i < words.length; i++) {
    if(words[i].length < minLengthWord.length) {
       minLengthWord = words[i];
    }
   }
   return lengthOfWord
   
}

注意:

return
语句位于
for
循环之外。因为我们需要找到最短的单词,只有当我们遍历整个数组时我们才会知道。


0
投票

您需要实际跟踪并返回您确定最短的单词。另外, string.length 会直接给出长度。请注意,为了您的学习目的,我试图尽可能接近您的概念。 :)

const words= ['bil', 'plante', 'kaffe', 'bog', 'ei', 'planetarium'];

function getShortestWord() {
    let shortest = 0;
    for(let i = 0; i < words.length; i++) {

        if(words[i].length < words[shortest].length) {
            shortest = i
        }
    }
    return words[shortest]
}

let shortest = getShortestWord()
console.log("Shortest = " + shortest)

0
投票

只需循环存储第一个元素作为当前最短单词进行比较的数组,如果另一个字符串的长度较短,则将其设为当前最短单词,否则继续循环并检查,最后返回该单词,因为它是最短的单词在那个数组中

const words = ['bil', 'plante', 'kaffe', 'bog', 'ei', 'planetarium'];

function getShortestWord(w) {
  let shortestWord = w[0];
  for(let i = 1;i < w.length; i++) {
    // it's just short circuit condition
    shortestWord.length > w[i].length && (shortestWord = w[i]);
  }
  return shortestWord;
}

console.log(getShortestWord(words));


0
投票

查找数组中最短的单词。

代码:

const words = [
"cat",
"dog",
"bird",
"elephant",
"lion",
"tiger",
"zebra",
"monkey",
"ox",
"b",
"a",
"giraffe",
"antelop",
];

function findShortestWords(words) {
let wordWithShortestLength = words.reduce((acc, current) => {
    if (current.length < acc.length) {
    return current;
    } else {
    return acc;
    }
}, words[0]);

let wordsWithShortestLength = words.filter((m)=>{
    return m.length == wordWithShortestLength.length
})
return wordsWithShortestLength
}

var shortest = findShortestWords(words);
console.log(shortest);

输出:

[ 'b', 'a' ]
© www.soinside.com 2019 - 2024. All rights reserved.