Javascript 查找数组中最早的重复日期

Javascript 查找数组中最早的重复日期,javascript,Javascript,正在尝试查找数组中重复次数最多的最早日期。以下内容应返回2017-06-20,但返回2017-06-21 const arr = [ '2017-06-17', '2017-06-18', '2017-06-19', '2017-06-20', '2017-06-20', '2017-06-21', '2017-06-21', '2017-06-22', '2017-06-23', ]; const test = (arr) => { return

正在尝试查找数组中重复次数最多的最早日期。以下内容应返回2017-06-20,但返回2017-06-21

const arr = [
  '2017-06-17',
  '2017-06-18',
  '2017-06-19',
  '2017-06-20',
  '2017-06-20',
  '2017-06-21',
  '2017-06-21',
  '2017-06-22',
  '2017-06-23',
];

const test = (arr) => {
  return arr
    .sort(
      (a, b) =>
        arr.filter((val) => val === a).length -
        arr.filter((val) => val === b).length
    )
    .pop();
};

使用排序数组,您可以搜索最早的同一对

const
数组=['2017-06-17'、'2017-06-18'、'2017-06-19'、'2017-06-20'、'2017-06-20'、'2017-06-21'、'2017-06-21'、'2017-06-22'、'2017-06-23'],
result=array.find((value,i,{[i-1]:prev})=>value==prev);

控制台日志(结果)
您可以使用一个函数,给定一个数组,对其进行排序,然后通过将每个日期与前一个日期进行比较来搜索最早的重复日期,例如..
GetEarliesTreepeatedDate

更新:我已经用另一个函数更新了我的代码,
getEarliestMostRepeatedDate
,该函数给定一个数组,返回最早的重复日期

让arr=[
'2017-06-17',
'2017-06-18',
'2017-06-19',
'2017-06-20',
'2017-06-20',
'2017-06-21',
'2017-06-21',
'2017-06-21',
'2017-06-22',
'2017-06-23',
];
日志(getEarliesTreepeatedDate(arr));
log(getEarliestMostrepatedDate(arr));
函数GetEarliesTreepeatedDate(arr){
arr.sort();
如果(arr.length>1){
for(设i=1;i{
设Isinar2=false;
arr2.forEach(日期2=>{
如果(日期==日期2.日期){
Isinar2=真;
date2.repeation++;
}
});
如果(!isInArr2){
arr2.push({
日期:日期:,
重复:1
});
}
});
设MaxRepeation=1;
让EarliestMostrepatedDate=null;
arr2.forEach(日期2=>{
如果(date2.Repeation>MaxRepeation){
MaxRepeation=date2.repeation;
earliestMostRepeatedDate=date2.date;
}
});
返回最早的目标日期;

}
好的,根据您的要求,我已经编辑了我的代码以获得您的支持 最早的重复日期,而不仅仅是最早的重复日期 为了证明这一点,我也改变了阵列

const arr=[
'2017-06-19',
'2017-06-21',
'2017-06-18',
'2017-06-20',
'2017-06-23',
'2017-06-21',
'2017-06-20',
'2017-06-22',
'2017-06-17',
'2017-06-21',
];
函数gettheearlymostrepectedate(arr){
var r={},date=“”,max=0;
arr.forEach(功能(e){
r[e]=类型r[e]!=“未定义”?r[e]+1:0;
});
对于(r中的a){
如果(最大值log(gettheearlymostreepeatedate(arr))
数组是否总是这样排序?不,不总是这样排序两个
2017-06-21
值被排序到数组的最末端。它们的出现频率与2017-06-20相同,但您忽略了将实际日期顺序作为第二顺序标准,对于具有相同计数的元素。@user3214545好的,那么上面返回的是重复的最早日期,但我需要最早的最早重复日期,因此如果数组有2个重复值,一个值重复3次,它应该返回一个重复3次的值,因此对于如下数组,它应该返回2017-06-21 let arr=[ '2017-06-17', '2017-06-18', '2017-06-19', '2017-06-20', '2017-06-20', '2017-06-21', '2017-06-21', '2017-06-22', '2017-06-23', ];@user3214545,您在问题中没有提到这一点,您想返回重复次数最多的日期还是最早的日期?是的,很抱歉,这是我需要的:重复次数最多的日期还是最早的日期…我会更新question@user3214545我已经编辑了我的代码来回答你的问题