Javascript:使用.sort和compare函数查找数组中最长的单词

Javascript:使用.sort和compare函数查找数组中最长的单词,javascript,arrays,function,sorting,compare,Javascript,Arrays,Function,Sorting,Compare,我是Javascript的初学者。在过去的几个小时里,我一直在困惑这个问题,所以我希望有人能帮助我理解我试图编写的代码中的逻辑 我目前正在尝试编写一个函数,该函数将获取数组中最长的字符串并将其传递回控制台。如果出现平局,控制台应返回字母最多的第一个单词 我发现了一段很好的代码可以实现这一点,但我找不到一种方法将其变成函数 arr. sort(function (a, b) { return b.length - a.length })[0]; 我试过了 var longestWord = fu

我是Javascript的初学者。在过去的几个小时里,我一直在困惑这个问题,所以我希望有人能帮助我理解我试图编写的代码中的逻辑

我目前正在尝试编写一个函数,该函数将获取数组中最长的字符串并将其传递回控制台。如果出现平局,控制台应返回字母最多的第一个单词

我发现了一段很好的代码可以实现这一点,但我找不到一种方法将其变成函数

arr. sort(function (a, b) { return b.length - a.length })[0];
我试过了

var longestWord = function(arr) {
    sort(function (a, b) { return b.length - a.length })[0];
}
这不管用。我知道我做错了什么,但我不确定那是什么。而且,我也不太明白为什么会这样。我可以理解函数比较两个变量的长度,但是为什么0索引必须在末尾


非常感谢您的帮助

函数不返回任何内容。另外,可以调用
sort
函数,但不能调用
Array.prototype.sort

这一个确实有效:

var longestWord=函数(arr){
返回arr.sort(函数(a,b){return b.length-a.length})[0];
}

document.body.innerText=最长的单词(['a','ab','abcdef','abcd','a','abcde']);//abcdef
您的函数不返回任何内容。另外,可以调用
sort
函数,但不能调用
Array.prototype.sort

这一个确实有效:

var longestWord=函数(arr){
返回arr.sort(函数(a,b){return b.length-a.length})[0];
}
document.body.innerText=最长的单词(['a','ab','abcdef','abcd','a','abcde']);//abcdef
我建议你读一下这个 在使用sort()之前。在使用之前,请确保您了解irator

我建议你读一下这个
在使用sort()之前。在使用之前,请确保您了解该irator。

出于某种原因,我认为
.sort
不会返回相同的对象,这是我的错。非常感谢!这确实帮助我理解了为什么我的代码不起作用。出于某种原因,我认为
.sort
不会返回相同的对象,这是我的错。非常感谢!这真的帮助我理解了为什么我的代码不起作用。只是附带说明:排序是一种昂贵的方法,因为即使是最好的情况也是O(nlog n)。最好只使用for循环遍历数组,并将每个单词与一个
longestWordFound
变量进行比较,该变量将为O(1)。只需注意:排序是一种昂贵的方法,因为即使是最好的情况也是O(nlog)。最好使用for循环遍历数组,并将每个单词与
longestWordFound
变量进行比较,该变量为O(1)。非常感谢您的建议!非常感谢你的建议!
var my_array = ["a", "aaa", "aa", "aaaaaaa", "a"];
function longestString(arr) {
  return arr.sort(function(a,b) {
    return b.length - a.length;
  })[0];
}
longestString(my_array);