dec*_*eze 167
var longest = arr.sort(function (a, b) { return b.length - a.length; })[0];
Run Code Online (Sandbox Code Playgroud)
可能效率更高,但仅在Javascript 1.8/ECMAScript 5中可用,并且在旧版浏览器中默认不可用:
var longest = arr.reduce(function (a, b) { return a.length > b.length ? a : b; });
Run Code Online (Sandbox Code Playgroud)
Dáv*_*zki 25
对旧问题的新答案:在ES6中,您可以做得更短:
Math.max(...(x.map(el => el.length)));
Run Code Online (Sandbox Code Playgroud)
Jas*_*aro 23
我会做这样的事情
var arr = ['first item', 'second item is longer than the third one',
'third longish item'];
var lgth = 0;
var longest;
for(var i=0; i < arr.length; i++){
if(arr[i].length > lgth){
var lgth = arr[i].length;
longest = arr[i];
}
}
alert(longest);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/jasongennaro/MLqLq/
reduce()在 ES6 中,这可以通过复杂的调用来完成O(n),而不是使用sort()以下解决方案O(nlogn):
const getLongestText = (arr) => arr.reduce(
(savedText, text) => (text.length > savedText.length ? text : savedText),
'',
);
console.log(getLongestText(['word', 'even-longer-word', 'long-word']))Run Code Online (Sandbox Code Playgroud)
var arr = [ 'fdgdfgdfg', 'gdfgf', 'gdfgdfhawsdgd', 'gdf', 'gdfhdfhjurvweadsd' ];
arr.sort(function (a, b) { return b.length - a.length })[0];
Run Code Online (Sandbox Code Playgroud)
也许不是最快的,但肯定非常可读:
function findLongestWord(array) {
var longestWord = "";
array.forEach(function(word) {
if(word.length > longestWord.length) {
longestWord = word;
}
});
return longestWord;
}
var word = findLongestWord(["The","quick","brown", "fox", "jumped", "over", "the", "lazy", "dog"]);
console.log(word); // result is "jumped"
Run Code Online (Sandbox Code Playgroud)
从 IE9+ 开始支持数组函数forEach。
| 归档时间: |
|
| 查看次数: |
87506 次 |
| 最近记录: |