javascript - 在 JavaScript 中查找最长和最短的单词
问题描述
一个问题是在一个字符串中找到最长的单词,另一个是在一个字符串中找到最短的单词。
我试图找出解决它们之间的区别。除了为什么最长长度是“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;
}
解决方案
您的问题可以在一行中使用reduce
.
最长的词:
string.split(' ').reduce((acc, cur) => acc.length >= cur.length ? acc : cur);
最短的词:
string.split(' ').reduce((acc, cur) => acc.length <= cur.length ? acc : cur);
这就是您的代码可能不起作用的原因:在shortestWord
中,您将当前最短的长度设置为数组中第一个单词的长度,但您没有将最短的单词设置为数组中的第一个单词,它仍然是未定义的。如果数组中的第一个单词恰好是最短的单词,则没有比它更短的单词,因此永远不会分配任何单词shortestWord
并且函数将返回undefined
。
解决方案:更换
var shortestWord;
和
var shortestWord = stringArray[0];
推荐阅读
- wordpress - 当我们在wordpress中输入带有图像的站点时,如何填充我们看到的站点的第一页
- c++ - 在 C++ 中,如果一个成员引用在其声明中被初始化,为什么它需要存储空间?
- python - Python / Pandas:如果满足三个条件,则删除重复项
- c# - OnTouchEvent 从未在 Xamarin Android 自定义渲染器中调用
- node.js - discord.js ReferenceError:未定义成员
- flutter - Flutter 图表 tickProviderSpec 到 15 分钟
- kotlin - 是否有将 Lambda 记录为 KDoc 中的函数参数的约定?
- javascript - redux-form:如何在 Promise 中抛出新的 SubmissionError?
- .net - 针对远程 Active Directory 验证用户名
- constraint-programming - clp(Z) 与 Kiselyov 关系算术