Javascript:使用.sort和compare函数查找数组中最长的单词
Javascript: Using .sort with compare function to find longest word in array
我是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 = 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索引必须在末尾"问题: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
不同的是,第二个没有将中间结果存储在变量中。
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。
相关文章:
- Javascript-从随机的单词数组中创建段落
- 将组成单词的字符添加到数组的开头
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- 在两个位置显示数组中的随机单词
- 如果输入包含数组中的任何单词
- 单词数组到字符串
- 如何在 JavaScript 中将数组中每个单词的首字母大写
- 当javascript单词this用作数组时,它的含义是什么
- 如果字符串与数组中的多个单词匹配,则Javascript会选择该字符串
- Javascript/Node AI-如何使用match从单词数组中重复单词
- innerhtml.replace没有替换数组javascript中的所有单词
- 找到包含单词的特定链接并添加到数组中
- 将单词与具有JavaScript Regexp的数组进行匹配
- 在单词数组中查找相似的单词
- 查找数组中最长的单词/字符串
- 如何在 Javascript 中将字符串的每个单词放入数组中
- j查询从数组中删除值(如果包含单词)
- 在二维数组 JavaScript 中插入单词和计数
- 使用数组更改输入框中某些单词的颜色