moo*_*law 0 javascript arrays for-loop function
我创建了一个返回字符串最长字的函数.为了实现这一点,字符串已被拆分为一个数组并使用a进行迭代for loop.
出于某种原因,for循环在增加计数之前在同一项上迭代3次?我没有看到明显的错误.
这里发生了什么,我该如何阻止它?还有更好的方法来实现我在这里尝试做的事情吗?我对javascript比较陌生.
function longWord(str) {
var wordArr = str.split(' ');
var highest = 0;
var longestWd ;
for(var i = 0; i < wordArr.length; i++) {
var temp = wordArr[i].length
var word = wordArr[i];
if(temp > highest) {
highest = temp;
longestWd = word;
}
alert(longestWd);
alert(highest);
}
}
longWord('this is a string with a longest word');
Run Code Online (Sandbox Code Playgroud)
你的代码很好.如果您将警报替换为如下console.log调用:
console.log(i, word, longestWd)
Run Code Online (Sandbox Code Playgroud)
你可以看到它按预期工作:
0 "this" "this"
1 "is" "this"
2 "a" "this"
3 "string" "string"
4 "with" "string"
5 "a" "string"
6 "longest" "longest"
7 "word" "longest"
Run Code Online (Sandbox Code Playgroud)
一个很好的方法可以通过这样使用reduce:
function longWord(str){
return str.split(' ').reduce(function(a, b){
return a.length > b.length ? a : b;
});
}
Run Code Online (Sandbox Code Playgroud)
该
reduce()方法对累加器应用函数,并且数组的每个值(从左到右)必须将其减少为单个值.