Javascript 在jQuery/Js中,相对于其内部数据对数组进行排序
有没有办法在Javascript 在jQuery/Js中,相对于其内部数据对数组进行排序,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,有没有办法在sort()方法中指定应作为参考的参数 例如: 我有一个元素数组,。,其中的参数为:date=Wed Apr 20 2016 00:00:00 GMT+0200(CEST)(例如) 现在,假设我有多个日期不同的,我希望它们按时间顺序排序。首先我用它们做一个数组。然后我尝试对它们进行排序,但我不知道如何或甚至是否可以指定参数 差不多 $date = $.makeArray($('#divRss li')) $date.sort(function(a,b) { return n
sort()
方法中指定应作为参考的参数
例如:
我有一个元素数组,。
,其中的参数为:date=Wed Apr 20 2016 00:00:00 GMT+0200(CEST)
(例如)
现在,假设我有多个日期不同的
,我希望它们按时间顺序排序。首先我用它们做一个数组。然后我尝试对它们进行排序,但我不知道如何或甚至是否可以指定参数
差不多
$date = $.makeArray($('#divRss li'))
$date.sort(function(a,b) {
return new Date(a.date).getTime() - new Date(b.date).getTime()
});
其中日期应为数据(“日期”)
这里有一个用于测试/示例目的的提琴:给定您提供的HTML,没有带有
date
属性的元素。我能看到的唯一日期是每个li
中.itemDate
元素的值。您可以修改sort()
以使用此值。运行sort()
后,可以按排序顺序将li
重新附加到其父元素。还要注意的是,您不需要在jQuery对象上使用$.makeArray()
,并且#divRss
不存在(尽管我假设您的示例HTML中缺少这一点)
说了这么多,试试这个:
$('.feedEkList li').sort(function(a, b) {
var aDate = $(a).find('.itemDate').text();
var bDate = $(b).find('.itemDate').text();
return new Date(bDate).getTime() - new Date(aDate).getTime();
}).appendTo('.feedEkList');
注意:这是按日期降序排列的。若要将其更改为升序,请从
aDate
中减去bDate
我知道了!!谢谢你,我今天向你学习了!Ps:当我指的是日期时,它是以下内容的输出:$('li').each(function(){console.log($(this.data('date'))})
没问题,很乐意帮助