我是代码新手,因此我遇到了在字符串数组中找到最长单词的挑战。我遵循了一个在句子中找到最长字符串的示例,并提出了以下建议:
function longestString(strs) {
return strs.sort(function(a, b) {return b.length - a.length})[0];
}
longestString('boop', 'bloomburg', 'hello');
它没有用,我也不知道怎么了
答案 0 :(得分:3)
您没有传递数组,也不为此使用sort,这是最慢的方法。您可以简单地使用for循环或使用更好的语法,而应使用reduce。
console.log(longestStringForLoop(['boop', 'bloomburg', 'hello']));
console.log(longestStringReduce(['boop', 'bloomburg', 'hello']));
function longestStringForLoop(arr) {
let word = "";
for (let i = 0; i < arr.length; i++) {
if (word.length < arr[i].length) {
word = arr[i];
}
}
return word;
}
function longestStringReduce(arr) {
return arr.reduce((a, b) => a.length < b.length ? b : a, "");
}
请注意,像您一样传递多个字符串之间的巨大区别
longestString('boop', 'bloomburg', 'hello');
并传递字符串数组
longestString(['boop', 'bloomburg', 'hello']);
答案 1 :(得分:1)
您可以使用rest parameter
(...
)语法使我们可以将不确定数量的参数表示为数组。
function longestString(...strs) {
return strs.sort(function(a, b) {return b.length - a.length})[0];
}
console.log(longestString('boop', 'bloomburg', 'hello'));
还有一个选择是使用reduce
而不是sort
。与使用reduce
sort
的重复次数更少
function longestString(...strs) {
return strs.reduce((c, v) => c.length > v.length ? c : v);
}
console.log(longestString('boop', 'bloomburg', 'hello'));
答案 2 :(得分:0)
致电longestString
时:
longestString('boop', 'bloomburg', 'hello');
...,它传递三个字符串参数,而不是单个字符串数组参数。您可以将调用转换为传递Array:
longestString(['boop', 'bloomburg', 'hello']);
...或者对于现代JS,您可以使用...
更改函数接受变量参数:
function longestString(...strs) {
return strs.sort(function(a, b) {return b.length - a.length})[0];
}
答案 3 :(得分:0)
感谢您的帮助! 我实际上使用for循环
得到了答案function longestString(strs) {
let longest = '';
for (let i = 0; i < strs.length; i++) {
if (strs[i].length > longest.length)
longest = strs[i];
}
return longest;
}
答案 4 :(得分:-1)
这是一种实现方法:
function longestword (str){
if(str == undefined || str == null)
return null;
var w = str.split(" ");
var result = null;
int count = 0;
for(var i = 0; i < w.lenght; i++){
if(w[i].length > count){
count = w[i].lenght;
result = w[i];
}
}
return result;
}
调用函数传递字符串。
var lword = longestword("What is the longest word of my string?");
答案 5 :(得分:-4)
Strs不是数组。这是一个字符串。
因此,当您运行.sort方法时,它仅适用于数组。
有很多方法可以使它起作用,但是在ES6中,有rest参数可以让我们轻松快速地将字符串作为数组传递:
function longestString(...strs) {
return strs.sort(function(a, b) {return b.length - a.length})[0];
}
longestString('boop', 'bloomburg', 'hello');