按日期排序对象的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 
+0

不是var TheDaysToSort = $ .extend(false,TheDays);创建一个新的数组?我不想修改作为参数进来的数组的顺序。会写var var TheDaysToSort = TheDays;创建一个参考或副本? – frenchie 2012-03-21 15:50:33

+0

好吧,非常酷,我不知道.slice(0);现在它工作正常。谢谢。 – frenchie 2012-03-21 15:54:57

+1

@frenchie - NO。 '.extend(false,TheDays);'不会产生数组。查看我编辑的答案以获得副本的方式。 – jfriend00 2012-03-21 15:55:57

你应该使用:

var TheDaysToSort = $.extend([], TheDays); 

然后TheDaysToSort将是正确的数组将被成功排序。