Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找数组中最长的字/字符串_Javascript_Arrays - Fatal编程技术网

Javascript 查找数组中最长的字/字符串

Javascript 查找数组中最长的字/字符串,javascript,arrays,Javascript,Arrays,我刚开始学习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) {

我刚开始学习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)
var longWords=[“佩内洛普”、“约翰尼”、“奥布马扬”、“捷克斯洛伐克”、“斯洛文尼亚”]
var=0;
for(var i=0;i
问题是它总是打印数组中的第一个元素。这意味着
最长=长单词[0]
。现在,当我将行
longest=longWords[I]
更改为
longest=longWords[I].length时,我得到了最长字符的计数。请告诉我为什么它不起作用,以及如何使用
for
循环来实现这一点。

如果(最长if (longest < longWords[i].length) {
应该是

if (longest.length < longWords[i].length) {
if(longest.length
var longest=0;
for(var i=0;ilongest.length){
最长=长单词[i];
}
}

您可以根据字符串长度自定义排序,并获取第一项:

longWords.sort(函数(a,b){
返回b.length-a.length;
});
这会将阵列转换为以下内容:

[“捷克斯洛伐克”、“奥布马扬”、“佩内洛普”、“斯洛文尼亚”、“约翰尼”]
此时,您可以抓取第一项。但是请注意,第一项后面可能紧跟着其他长度相同的字符串

对于上面的代码,
longest
被声明为一个数字,但后来被设置为一个字符串。我们感兴趣的数字来自字符串的长度。我们的条件应该是:

//没有必要再查两次
电流=长字[i];
如果(最长长度<当前长度){
最长=电流;
}

我建议使用
array.prototype.sort()
,通过降低数组元素的长度对数组进行排序,而不是查找最长的单词:

var longWords=[“佩内洛普”、“约翰尼”、“奥布马扬”、“捷克斯洛伐克”、“斯洛文尼亚”],
sorted=longWords.sort(函数(a,b){
返回a.length

参考资料:


如果您对数组进行排序并打印第一个元素
arr[0]



还有另一种获得最长元素的好方法,那就是使用
reduce
方法:

var longWords=[“佩内洛普”、“约翰尼”、“奥布马扬”、“捷克斯洛伐克”、“斯洛文尼亚”];
var longhwords.reduce(
(a,b)=>a.length>=b.length?a:b
);

console.log(最长);
您是否需要处理两个单词长度相等且都最长的用例?
var longest = 0;

for (var i = 0; i < longWords.length; i++) {
    if ( longWords[i].length > longest.length ) {
        longest = longWords[i];
    }
}
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"]
var longWords = ["Penelope", "Johny", "Aubumayang", "Czechoslovakia", "Slovenia"];
var sorted = longWords.sort((a, b) => b.length - a.length );

console.log(sorted[0]);
// "Czechoslovakia"