【发布时间】:2011-11-22 16:55:12
【问题描述】:
如果我有一个对象列表:
var objectList= LIST_OF_OBJECT;
列表中的每个对象都包含三个属性:“name”、“date”、“gender "
如何按“date”属性升序对列表中的对象进行排序?
(“日期”属性包含字符串值,如“2002-08-29 21:15:31+0500”)
【问题讨论】:
标签: javascript jquery date sorting
如果我有一个对象列表:
var objectList= LIST_OF_OBJECT;
列表中的每个对象都包含三个属性:“name”、“date”、“gender "
如何按“date”属性升序对列表中的对象进行排序?
(“日期”属性包含字符串值,如“2002-08-29 21:15:31+0500”)
【问题讨论】:
标签: javascript jquery date sorting
如果您的对象在 String 字段中包含 日期 信息:
yourArray.sort(function(a, b) { return new Date(a.date) - new Date(b.date) })
或者,如果他们在 Date 字段中有它:
yourArray.sort(function(a, b) { return a.date - b.date })
【讨论】:
new Date在同一时区,你甚至根本不需要valid date strings。
Array.sort 方法接受一个排序函数,该函数接受两个元素作为参数,并且应该返回:
.
objectList.sort(function (a, b) {
var key1 = a.date;
var key2 = b.date;
if (key1 < key2) {
return -1;
} else if (key1 == key2) {
return 0;
} else {
return 1;
}
});
您很幸运,在您提供的日期格式中,在另一个日期之前的日期也是<,而不是使用字符串比较时的日期。如果不是这种情况,您必须先将字符串转换为日期:
objectList.sort(function (a, b) {
var key1 = new Date(a.date);
var key2 = new Date(b.date);
if (key1 < key2) {
return -1;
} else if (key1 == key2) {
return 0;
} else {
return 1;
}
});
【讨论】:
date 字段始终包含值“2002-08-29 21:15:31+0500”并且始终具有“+0500”,则可以在不解析为 @ 的情况下比较它们以进行排序987654327@对象。
yourArray.sort(function(a, b) {
a = new Date(a.date);
b = new Date(b.date);
return a >b ? -1 : a < b ? 1 : 0;
})
【讨论】:
你可以试试:
<script src="https://cyberknight.000webhostapp.com/arrange.js">
var a =[-1,0,5,4,3,2,6,1,1];
var b = totzarrange(a)
console.log(b);
</script>
【讨论】: