我从这个问题开始:如何对对象的 JS 对象进行排序?
从 2 条评论中,我想出了对对象的 Javascript 对象(只是一个 2D 对象)进行排序的最佳方法。
假设是一个 2D 对象变量,我按内部对象data
的值排序。customer
首先,我转换为对象数组,如下所示:
data = $.map(data, function(k, v) {
return [k];
});
然后我做这样的排序:
data = data.sort(function(a, b){
return a.customer > b.customer? 1: -1;
});
它运作良好,但现在我想首先按日期变量排序,然后按客户变量排序。就像排序函数在 SQL ( ...sort by date desc, customer asc;
) 中的工作方式一样。
但是,实际上我想要做的实际上要简单得多。在对日期值进行排序时,我要做的就是区分null
和!null
值。结果将是所有空值将被组合在一起,并且所有非空值都将组合在一起。
之后,所有顶级对象都应该是customer
有序的。
我想出了这个想法,基于我认为它应该如何工作:
data = data.sort(function(a, b){
if (a.fin_date !== null){
return 1;
}
return a.customer > b.customer? 1: -1;
});
这是一种工作。它将所有null
值排序到开头,并且所有空值都按正确的字母顺序排列,但所有其他fin_date
值 ( !null1
) 不按字母顺序排列。他们不是按照fin_date
任何一个顺序排列的。fin_date
不等于的对象null
似乎没有任何特定的顺序。
这就是我的问题:我需要带有fin-date
!=的对象null
按字母顺序排列。
谢谢!