按日期排序对象的javascript排序
问题描述:
我有一个函数,需要一个对象数组,我需要按天对数组进行排序;它看起来像这样:按日期排序对象的javascript排序
function Myfunction (TheDays) {
var TheDaysToSort = $.extend(false, TheDays);
function SortOrder (a, b) {
var Day1 = a['TheDate'];
var Day2 = b['TheDate'];
return Day1 - Day2;
};
TheDaysToSort.sort(SortOrder);
}
我得到一个错误Uncaught TypeError: Object #<Object> has no method 'sort'
答
您可以在阵列使用.sort()
。由于对象没有订单属性,因此不能使用.sort()
方法,因此不能使用.sort()
方法。
如果TheDays
是一个数组,那么目前还不清楚你想用$.extend(false, TheDays);
代码行来做什么。如果你可以解释应该做什么,那么我们可以帮助你应该做什么,以便TheDaysToSort
是一个你排序的数组。
例如,如果你想只是做的TheDays
副本,那么我建议这条线,而不是.extend()
行:
var TheDaysToSort = TheDays.slice(0); // make copy of array for sorting
答
你应该使用:
var TheDaysToSort = $.extend([], TheDays);
然后TheDaysToSort
将是正确的数组将被成功排序。
不是var TheDaysToSort = $ .extend(false,TheDays);创建一个新的数组?我不想修改作为参数进来的数组的顺序。会写var var TheDaysToSort = TheDays;创建一个参考或副本? – frenchie 2012-03-21 15:50:33
好吧,非常酷,我不知道.slice(0);现在它工作正常。谢谢。 – frenchie 2012-03-21 15:54:57
@frenchie - NO。 '.extend(false,TheDays);'不会产生数组。查看我编辑的答案以获得副本的方式。 – jfriend00 2012-03-21 15:55:57