在Javascript中查找模式的最简单方法

在Javascript中查找模式的最简单方法,javascript,Javascript,我是JavaScript的初学者,我试图编写代码来查找模式。我的代码正在运行,但它只能在连续编写时才能找到模式。但是当有这样一个数组a=[1,2,3,4,5,2]时,它找不到模式 由于我是初学者,我不想写任何复杂的东西,而是想用最简单的方法来学习。有人能帮我吗 list=[1,2,3,4,5,6,7,7] var empty=[] i=0 最大值=0 而(i您的代码假设参数数组是预排序的,这是一个风险和限制性的假设,并且似乎只对排序的数组起作用(反例:[1,1,1,7,7]错误地将7报告为模式

我是JavaScript的初学者,我试图编写代码来查找模式。我的代码正在运行,但它只能在连续编写时才能找到模式。但是当有这样一个数组
a=[1,2,3,4,5,2]
时,它找不到模式

由于我是初学者,我不想写任何复杂的东西,而是想用最简单的方法来学习。有人能帮我吗

list=[1,2,3,4,5,6,7,7]
var empty=[]
i=0
最大值=0

而(i您的代码假设参数数组是预排序的,这是一个风险和限制性的假设,并且似乎只对排序的数组起作用(反例:
[1,1,1,7,7]
错误地将
7
报告为模式)

如果您希望坚持使用这种方法,那么您的做法是正确的,但您需要跟踪当前/最佳条纹、当前/最佳元素,并在返回结果之前执行最长条纹的最终检查:

var模式=a=>{
a、 排序((x,y)=>x-y);
var bestStreak=1;
var bestElem=a[0];
var currentStreak=1;
var currentElem=a[0];
for(设i=1;i最佳条纹){
最佳条纹=当前条纹;
bestElem=currentElem;
}
电流条纹=0;
currentElem=a[i];
}
currentStreak++;
}
返回currentStreak>bestStreak?currentElem:bestElem;
};
日志(模式([1,2,3,4,5,6,7,7]);
日志(模式([1,1,1,4,5,6,7,7]);
日志(模式([1,2,3,3,3,6,3,7]);
日志(模式([1,3,3,4,5,2,2,1]);
console.log(模式([]);
使用散列

list = [1,2,3,4,5,6,7,7]
counts = {}
list.forEach(function(e) {
  if(counts[e] === undefined) {
    counts[e] = 0
  }
  counts[e] += 1
})
其结果是:

{1:1,2:1,3:1,4:1,5:1,6:1,7:2}

这个相关的问题涉及在散列中查找最大值和最小值,这基本上就是本文末尾要做的事情


请同时添加所需的结果。(什么是模式?)reduceOne hiccup有什么诱人的用途?如果没有找到模式,则无法捕获实例。如果没有找到模式,则函数将返回数组中的最后一个数字。All(非空)数组有一个模式。如果所有元素的频率都相同,我认为返回其中任何一个都可以。在统计中,模式不是出现次数,而是出现次数最多的数。因此,我们寻找的是一个键而不是一个值。找到值而不是相关键是很好的解决方案。