查找数组中最长的单词/字符串
Find the longest word/string in an array
我刚开始学习JavaScript。我正在尝试编写一个JavaScript来查找和打印数组中最长的单词。我想出了下面的代码:
var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"]
var longest = 0;
for (var i = 0; i < longWords.length; i++) {
if (longest < longWords[i].length) {
longest = longWords[i];
}
}
console.log(longest)
问题是它总是最终打印数组中的第一个元素。 这意味着longest = longWords[0]
.现在,当我将行longest = longWords[i]
更改为longest = longWords[i].length
时,我得到了最长字符的计数。请告诉我为什么它不起作用以及我如何使用for
循环执行此操作。
if (longest < longWords[i].length) {
应该是
if (longest.length < longWords[i].length) {
您可以根据字符串长度自定义排序,并抓取第一项:
longWords.sort(function(a, b) {
return b.length - a.length;
});
这会将您的阵列转换为以下内容:
["Czechoslovakia", "Aubumayang", "Penelope", "Slovenia", "Johny"]
此时,您可以抓住第一项。但请注意,紧跟在第一个字符串之后的其他字符串可能具有相同的长度。
至于你上面的代码,longest
被声明为一个数字,但后来设置为一个字符串。我们感兴趣的数字来自字符串的长度。我们的条件应该是:
// No sense in looking this up twice
current = longWord[i];
if ( longest.length < current.length ) {
longest = current;
}
与其找到最长的单词,我建议使用Array.prototype.sort()
按元素的降序长度对数组进行排序:
var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"],
sorted = longWords.sort(function (a, b) {
return a.length < b.length;
});
console.log(sorted);
// ["Czechoslovakia", "Aubumayang", "Penelope", "Slovenia", "Johny"]
JS小提琴演示。
引用:
-
Array.sort()
.
var longest = 0;
for (var i = 0; i < longWords.length; i++) {
if ( longWords[i].length > longest.length ) {
longest = longWords[i];
}
}
如果您sort
数组并打印第一个元素arr.[0]
,我可以轻松打印最长的单词
var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"];
var sorted = longWords.sort((a, b) => b.length - a.length );
console.log(sorted[0]);
// "Czechoslovakia"
还有另一种获取最长元素的好方法,那就是使用 reduce
方法:
var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"];
var longest = longWords.reduce(
(a, b) => a.length >= b.length ? a : b
);
console.log(longest);
let longest = 0;
for (let i = 0; i < longWords.length; i++) {
let word = longWords[i];
if (longest < word.length) {
longest = word.length;
}
}
console.log(longest);
相关文章:
- 如何在Javascript中从字符串中提取某些单词
- 如何在PHP中获取特定的字符串单词
- 对字符串使用IndexOf来挑选某些单词
- 如何替换数据属性中的特定字符串单词
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 我如何从字符串中选出第一个单词的第一个字母,然后再选出第二个单词
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 类别自动完成jQuery中的单词级自定义筛选器,而不是子字符串
- 测试字符串中的多个单词
- 正则表达式以更改字符串中的某些单词
- 输出包含3个单词的字符串中的前2个单词
- Geoplugin字符串结果为德语单词/语言
- 如何知道找到的单词是字符串的一部分还是JavaScript中的函数调用
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 查找数组中最长的单词/字符串
- 使用 jQuery 在大写字母中制作特定的单词(字符串)
- 在 javascript 中使用嵌套的 for 循环返回单词字符串中重复最多的字母
- JavaScript RegEx新手-从三个单词字符串中选择中间单词
- 使用javascript确保给定的单词(字符串)都是大写字母
- 判断多单词字符串是否包含单词