我是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索引必须在最后呢?
非常感谢任何帮助!!
答案 0 :(得分:3)
你的函数什么也没有返回。另外,您调用sort
函数,但不调用Array.prototype.sort
。
这个确实有效:
var longestWord = function(arr) {
return arr.sort(function (a, b) { return b.length - a.length })[0];
}
document.body.innerText = longestWord(['a', 'ab', 'abcdef', 'abcd', 'a', 'abcde']); // abcdef

回答你的问题,但为什么0指数必须在最后?#34;问题:Array.prototype.sort
返回一个数组,你获得数组中的第一项以获得最长的单词。这个[0]
是一个数组下标,即"数组中的第一项"。
这两个片段等效:
var arr = ['a', 'ab', 'abcdef', 'abcd', 'a', 'abcde'];
// arr is ['a', 'ab', 'abcdef', 'abcd', 'a', 'abcde']
var arrSorted = arr.sort(function(a, b) { return b.length - a.length; });
// arrSorted is ['abcdef', 'abcde', 'abcd', 'ab', 'a', 'a']
var result = arrSorted[0];
// result is abcdef, the longest word
和
var arr = ['a', 'ab', 'abcdef', 'abcd', 'a', 'abcde'];
// arr is ['a', 'ab', 'abcdef', 'abcd', 'a', 'abcde']
var result = arr.sort(function(a, b) { return b.length - a.length; })[0];
// result is abcdef, the longest word
不同之处在于第二个不会将中间结果存储在变量中。
答案 1 :(得分:0)
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);
我建议用这个来阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort 在使用sort()之前。确保在使用之前了解irator。