如何使用javascript查找和记录数组中最长的重复序列号

如何使用javascript查找和记录数组中最长的重复序列号,javascript,arrays,Javascript,Arrays,我的问题是我无法console.log在数组中重复相同的数字。我可以找到此代码出现的次数: var array = [2, 1, 1, 2, 3, 3, 2, 2, 2, 1], currentNum = 1, counter = 0, item; for (var i = 0; i < array.length; i++) { for (var j = i; j < array.length; j++) { if (array[i]

我的问题是我无法console.log在数组中重复相同的数字。我可以找到此代码出现的次数:

var array = [2, 1, 1, 2, 3, 3, 2, 2, 2, 1],
    currentNum = 1,
    counter = 0,
    item;

for (var i = 0; i < array.length; i++) {
    for (var j = i; j < array.length; j++) {
        if (array[i] == array[j])
            counter++;
        if (currentNum < counter) {
            currentNum = counter;
            item = array[i];
        }
    }
    counter = 0;
}
console.log(item + " ( " + currentNum + " times ) ");
var数组=[2,1,1,2,3,3,2,2,2,1],
currentNum=1,
计数器=0,
项目;
对于(var i=0;i
但我真正的问题是我想记录2,2,2部分,但我不知道如何记录。
提前非常感谢你们

下面将找到第一个最长的实例(假设有多个相同长度的序列)

第一个
reduce()
为每个序列创建子数组,第二个reduce()检查返回第一个最长序列实例的子数组的长度

var数组=[2,1,1,2,3,3,2,2,2,1];
var res=array.reduce(函数(a,c,i){
if(a.length&&a[a.length-1][0]==c){
a[a.length-1]。推送(c)
}否则{
a、 推送([c]);
}  
归还
},[])。减少(函数(a,c){
返回c.length>a.length?c:a;
});
log('Sequence length=',res.length);

log('Value=',res[0])Array.prototype.forEach或reduce更适合通过数组进行迭代。 下面是一个解决方案,其中包含一个遍历数组(只有3个附加变量:))

可以与包含临时结果和项目实际计数的对象一起使用

如果项目等于最后一个项目,则增加最后一个计数,并检查该计数是否大于临时计数。然后将临时计数替换为实际计数

var数组=[2,1,1,2,3,3,2,2,2,1],
count=array.reduce(函数(r,a,i,aa){
如果(a==aa[i-1]){
r、 最后,count++;

如果(!(r.last.count如果两个数字重复计数相同,会发生什么情况?非常感谢:))
var array = [2, 1, 1, 2, 3, 3, 2, 2, 2, 1]

var item = array[0], maxTimes = 1, currentTimes = 1

array.reduce(function(prev, current) {
 if (prev === current) {
   currentTimes = currentTimes + 1

   if (currentTimes > maxTimes) {
     maxTimes = currentTimes
     item = current
   }
 } else {
   currentTimes = 1
 }

 return current
})

console.log(item, maxTimes)