【发布时间】:2019-04-30 00:39:36
【问题描述】:
其中一个问题是在一个字符串中找到最长的单词,另一个是在一个字符串中找到最短的单词。
我试图找出解决它们之间的区别。除了为什么最长长度是“longestlength = 0”而不是“longestlength = newString[0].length”之外,我什么都理解。我尝试用它来解决它,并且输出未定义。同样,对于“shortestLength”,如果我用“0”而不是“newString[0].length”初始化它,我会得到未定义,但我不明白它背后的原因。
//code for longest string
function longestWord(string) {
let newString =string.split(" ");
let longestWord;
let longestlength= 0;
for(let i=0; i<newString.length; i++){
if(newString[i].length > longestlength){
longestlength = newString[i].length;
longestWord= newString[i];
}
}
return longestWord;
}
//code for shortest string
function shortestWord(string) {
var stringArray = string.split(" ");
var shortestWord;
var shortestLength = stringArray[0].length;
for(var i = 0; i < stringArray.length; i++){
if(stringArray[i].length < shortestLength){
shortestLength = stringArray[i].length;
shortestWord = stringArray[i];
}
}
return shortestWord;
}
【问题讨论】:
-
在
longestWord函数中,用0初始化longestlength变量是有意义的,因为它将被长度大于0的数组的第一个元素替换。在shortestWord你假设第一个单词是最短的,仅在随后的 for 循环迭代中验证。但是,我认为那里有一个错误,即shortestWord应该用stringArray[0]的值初始化。 -
我很好奇您的输入文本是否有任何标点符号。如果是这样,那么在
" "上拆分不一定会给你一个准确的分词。
标签: javascript arrays