使用JavaScript,我试图找到一种方法来找到数组中相同数字(在本例中为1)的最长出现次数.
例如,这是一个示例数组:
[2,5,3,1,1,1,3,7,9,6,4,1,1,1,1,1,4,7,2,3,1,1,4,3]
我想编写一个返回"5"的函数,因为数字1连续出现5次.(它也连续发生3次和2次,但我发生的时间最长).
到目前为止,我写道:
function streak(arr) {
var i,
temp,
streak,
length = arr.length;
for(i=0; i<length; i++) {
if (arr[i] === 1) {
streak += 1;
} else {
temp = streak;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如果我发现一个事件,我需要某种方式知道我离开的地方,但我感觉有些卡住了.
有什么指针吗?
我稍微修改了你的功能.您需要将最高条纹存储为当前条纹的单独变量,并在循环中必要时覆盖 - 最后在函数末尾返回该变量.
function streak(arr) {
var i,
temp,
streak,
length = arr.length,
highestStreak = 0;
for(i = 0; i < length; i++) {
// check the value of the current entry against the last
if(temp != '' && temp == arr[i]) {
// it's a match
streak++;
} else {
// it's not a match, start streak from 1
streak = 1;
}
// set current letter for next time
temp = arr[i];
// set the master streak var
if(streak > highestStreak) {
highestStreak = streak;
}
}
return highestStreak;
}
var array = [2,5,3,1,1,1,3,7,9,6,4,1,1,1,1,1,4,7,2,3,1,1,4,3];
console.log(streak(array)); // 5
Run Code Online (Sandbox Code Playgroud)
如果你还想跟踪最高条纹的值,在函数的开头定义另一个变量,保存最高条纹时保存它的值,并将其作为数组返回:
// set the master streak var
if(streak > highestStreak) {
highestStreakValue = temp;
highestStreak = streak;
}
}
return [highestStreak, highestStreakValue];
var array = [2,5,3,1,1,1,3,7,9,6,4,'a','a','a','a','a',4,7,2,3,1,1,4,3];
console.log(streak(array)); // [5, "a"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4222 次 |
| 最近记录: |