使用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;
}
}
}
我知道我需要某种方式来知道我发现哪里发生了什么,但是我感觉有点卡住了。
有指针吗?
我已经稍微修改了您的功能。您需要将最高的条纹存储为与当前条纹分开的单独变量,并在循环中需要的地方覆盖它-最终在函数结尾处返回该变量。
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
而且,如果您还想跟踪最高条纹的值,请在函数开始时定义另一个变量,在保存最高条纹时保存其值,然后将其作为数组返回:
// 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"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句