Javascript 查找数组中单个数字的最长连续长度

Javascript 查找数组中单个数字的最长连续长度,javascript,Javascript,以下是问题的完整描述: //编写一个函数,该函数获取数字列表并返回 //单个数字的最长连续延伸。例如,在输入[1,7,7,3]上, //正确的返回值是2,因为一行中有两个7。关于输入 //[1,7,7,3,9,9,9,4,9],正确的返回值是3,因为一行中有三个9 以下是我的解决方案: let sequenceChecker=(arr)=>{ 设finalNum=0; 让第二个通过=假; const bigestNumber=arr.sort()[arr.length-1] arr.forEa

以下是问题的完整描述:

//编写一个函数,该函数获取数字列表并返回 //单个数字的最长连续延伸。例如,在输入[1,7,7,3]上, //正确的返回值是2,因为一行中有两个7。关于输入 //[1,7,7,3,9,9,9,4,9],正确的返回值是3,因为一行中有三个9

以下是我的解决方案:

let sequenceChecker=(arr)=>{
设finalNum=0;
让第二个通过=假;
const bigestNumber=arr.sort()[arr.length-1]
arr.forEach(num=>{
如果(num==bigestnume){
finalNum++
}
如果(num!=bigestNumber&&finalNum>0),则为else{
secondPass=true
}
else if(secondPass==true&&num==bigestNumber){
最终值=0
} 
})
返回终局
}
log((sequenceChecker([1,7,7,3])).toString();
log((sequenceChecker([1,7,7,3,9,9,9,4,9])).toString()请尝试以下操作:
i使用变量中的前一个e递增计数来检查序列号

var arr = [1,7,7,3,9,9,9,4,4,4,4,4,4,9,9,9,9,9,9,9];
    
var prev; 
var count=0; 
var finalnum=0;

$.each(arr, function(index,num){

  if(prev != num) {
    prev = num;
    finalnum = (finalnum <= count ? count : finalnum);
    count = 1;
  }
  else {
    count = count + 1;
  }
  
  if(index == (arr.length - 1))
  {
    finalnum = (finalnum <= count ? count : finalnum);
  }    

});
console.log(finalnum);
var arr=[1,7,7,3,9,9,9,4,4,4,4,9,9,9,9];
var-prev;
var计数=0;
var finalnum=0;
$.each(arr,函数(index,num){
如果(上一个!=num){
prev=num;
finalnum=(finalnum试试这个:
i使用变量中的前一个e递增计数来检查序列号

var arr = [1,7,7,3,9,9,9,4,4,4,4,4,4,9,9,9,9,9,9,9];
    
var prev; 
var count=0; 
var finalnum=0;

$.each(arr, function(index,num){

  if(prev != num) {
    prev = num;
    finalnum = (finalnum <= count ? count : finalnum);
    count = 1;
  }
  else {
    count = count + 1;
  }
  
  if(index == (arr.length - 1))
  {
    finalnum = (finalnum <= count ? count : finalnum);
  }    

});
console.log(finalnum);
var arr=[1,7,7,3,9,9,9,4,4,4,4,9,9,9,9];
var-prev;
var计数=0;
var finalnum=0;
$.each(arr,函数(index,num){
如果(上一个!=num){
prev=num;

finalnum=(finalnum我会这样做。创建一个函数,通过一个数字返回拉伸长度,如果数组不包含该数字,它将返回-1。 然后,我会比较每个数字的回报,并返回最大的数字

const getLongestStretch=(arr,number)=>{
如果(!arr.includes(number))返回-1;
常量过滤器DarrayLength=arr.filter(
(n,i)=>n==number&&(arr[i-1]==number | | arr[i+1]==number)
).长度;
如果(filteredArrayLength==0)返回1;
返回过滤器DarrayLength;
};
常量序列检查器=(arr)=>
arr.reduce(
(结果,编号)=>Math.max(结果,getLongestStretch(arr,编号)),
1.
);

我想这样做。创建一个函数,返回拉伸长度的数字,如果数组不包含该数字,它将返回-1。 然后,我会比较每个数字的回报,并返回最大的数字

const getLongestStretch=(arr,number)=>{
如果(!arr.includes(number))返回-1;
常量过滤器DarrayLength=arr.filter(
(n,i)=>n==number&&(arr[i-1]==number | | arr[i+1]==number)
).长度;
如果(filteredArrayLength==0)返回1;
返回过滤器DarrayLength;
};
常量序列检查器=(arr)=>
arr.reduce(
(结果,编号)=>Math.max(结果,getLongestStretch(arr,编号)),
1.
);
arr=[1,7,7,3,9,9,9,4,9,9,9,9,9,9];
让计数=1;
让journal=newmap();
for(设i=0;i1,7=>2,3=>1,9=>5,4=>1}
arr=[1,7,7,3,9,9,9,4,9,9,9,9,9,9];
让计数=1;
让journal=newmap();
for(设i=0;i1,7=>2,3=>1,9=>5,4=>1}

我真的不明白为什么我的代码不能解决这个问题
…因为它不符合逻辑。
.sort()
修改数组(已就位)侧边注意。这是非常慷慨的方法
const bigestNumber=arr.sort()[arr.length-1]
以获得最大值。我会后退一步,考虑如何在没有计算机的情况下解决此问题。是否需要对数组进行排序?是否需要最大的数字?第二次通过的意义是什么?这些问题的答案应告知您找到答案所需的最低限度。您不需要使用排序,而是需要跟踪以前的数字、此数字的当前计数,如果以前的数字不匹配,则能够将当前计数存档到另一个变量中。然后,您可以将当前计数重置为1并设置优先级我真的不明白为什么我的代码不能解决这个问题,因为它不符合逻辑。
.sort()
改变数组(在适当的位置)注意。这是一种非常慷慨的方法
const bigestNumber=arr.sort()[arr.length-1]
以获得最大值。我会后退一步,考虑如何在没有计算机的情况下解决此问题。是否需要对数组进行排序?是否需要最大的数字?第二次通过的意义是什么?这些问题的答案应告知您找到答案所需的最低限度。您不需要使用排序,而是需要跟踪以前的数字、此数字的当前计数,如果以前的数字不匹配,则能够将当前计数存档到另一个变量中。然后,您可以将当前计数重置为1并设置优先级或者再打一次。谢谢!user2232273谢谢!user2232273