对包含JavaScript日期的字符串数组进行排序

对包含JavaScript日期的字符串数组进行排序,javascript,jquery,arrays,Javascript,Jquery,Arrays,我尝试过使用下划线、min和max方法,但它们不能处理字符串。不管怎样,从我读到的和学到的,因为我从这两方面都得到了infinite 我的数组看起来像:dateData=[“26/06/2016”、“04/06/2016”、“13/05/2016”、“20/07/2016”] 我怎么才能在这张照片上抓到最后和第一次约会 我尝试使用排序,它看起来也像:\uu.chain(dateData).sort().first().value(),但我得到的是数组中的最后一个项目,而不是数组中的最后一个日期。

我尝试过使用下划线、
min
max
方法,但它们不能处理字符串。不管怎样,从我读到的和学到的,因为我从这两方面都得到了
infinite

我的数组看起来像:
dateData=[“26/06/2016”、“04/06/2016”、“13/05/2016”、“20/07/2016”]

我怎么才能在这张照片上抓到最后和第一次约会


我尝试使用
排序
,它看起来也像:
\uu.chain(dateData).sort().first().value()
,但我得到的是数组中的最后一个项目,而不是数组中的最后一个日期。

如果我们可以将日期字符串格式化为特定格式,那么将它们排序为字符串也将它们排序为日期,例如YYYY-MM-DD

您可以使用来比较字符串。您可以使用以下代码对日期进行排序:

dateData=[“2016年6月26日”、“2016年6月4日”、“2016年5月13日”、“2016年7月20日”]
dateData.sort(函数(a,b){
var A=A.拆分(“/”);
var B=B.分割(“/”);
var strA=[A[2],A[1],A[0]]。联接(“/”;
var strB=[B[2],B[1],B[0]];
返回strA.localeCompare(strB);
});

console.log(dateData)为了便于子任务操作,请将格式更改为:YYYY/MM/DD。 通过这种方式,常规排序将正确获得最小值和最大值,并且不需要进一步解析。 要排序的助手函数如下所示:

for(var i=0;i<dateData.length;++i)
{
    var split = dateData[i].split("/");
    dateData[i] = split.reverse().join("/");
}
for(var i=0;i
var-dateData=[“2016年6月26日”、“2016年6月4日”、“2016年5月13日”、“2016年7月20日”];
函数dateToNum(d){
//将日期“2016年6月26日”转换为20160626
d=d.split(“/”);返回编号(d[2]+d[1]+d[0]);
}
dateData.sort(函数(a,b){
返回日期(a)-日期(b);
});
console.log(dateData);
getTime()方法返回与 根据世界时间,指定日期的时间

dateData=[“2016年6月26日”、“2016年6月4日”、“2016年5月13日”、“2016年7月20日”]
.map(a=>a.split('/').reverse().join('/'))
.sort((a,b)=>新日期(a.getTime()-新日期(b.getTime());

console.log(dateData);
我知道的一种方法是对字符串使用.sort()函数

您必须将数组更改为YYYY-MM-DD

然后您可以有以下代码

var-dateData=[“2016/06/26”、“2016/06/04”、“2016/05/13”、“2016/07/20”];
dateData.sort();
var first=dateData[0];
var last=dateData[dateData.length-1];


其中first是最早的日期,last是最晚的日期

很多人已经提到了这一点,但您需要将日期字符串转换为可以在排序函数中进行比较的内容。我没有看到共享的一件事是如何获取第一个和最后一个日期。这应该可以做到:

//original date array
var dateData = ["04/06/2016", "13/05/2016", "20/07/2016","26/06/2016"];

//map through the original array and convert the dates to js date objects
var formattedDates = dateData.map(function(date){
    var splitDate = date.split("/")
    return new Date(splitDate[2],splitDate[1]-1,splitDate[0])
})

//sort the dates
formattedDates.sort(function(a,b){
  // Turn your strings into dates, and then subtract them
  // to get a value that is either negative, positive, or zero.
  return new Date(a) - new Date(b);
});

//Now you can get the first and last dates:
var firstDate = formattedDates[0]
var lastDate = formattedDates[formattedDates.length-1];

//log to check:
console.log('first date: ', firstDate)
console.log('last date: ', lastDate)

排序..从排序数组中获取第一个和最后一个项目..@Rayon我尝试了
..chain(dateData).Sort().last().value()
,但我获取了数组中的最后一个项目。而不是数组中的最后一个日期。不过,我可能只是很愚蠢:)@SmurfEkko,您需要通过编写一个自定义比较函数来指定排序行为。@ZZBOV这样做的方法是读取数组中的每一项,并计算出前两位较高的数字,然后是第二位,然后是第三位?这就是我应该做的吗?@SmurfEkko,不,你应该将值解析为日期,然后比较日期对象。考虑使用像LIB一样的动量来进行正确的日期解析。谢谢,老兄,这正是我要找的。那时候我甚至都没想过分类。我试着迭代数组中的每一项,然后从中计算出来。这是一个更好的方法。再次感谢!