如何对2D javascript对象进行自定义排序?
我从这个问题开始: 根据其中的两条评论,我提出了对Javascript对象进行排序的最佳方法(只是一个2D对象) 假设如何对2D javascript对象进行自定义排序?,javascript,sorting,javascript-objects,Javascript,Sorting,Javascript Objects,我从这个问题开始: 根据其中的两条评论,我提出了对Javascript对象进行排序的最佳方法(只是一个2D对象) 假设数据是一个2D对象变量,我按照内部对象的客户值进行排序 首先,我转换为对象数组,如下所示: data = $.map(data, function(k, v) { return [k]; }); data = data.sort(function(a, b){ return a.customer > b.customer? 1: -1; }); 然后我像
数据
是一个2D对象变量,我按照内部对象的客户
值进行排序
首先,我转换为对象数组,如下所示:
data = $.map(data, function(k, v) {
return [k];
});
data = data.sort(function(a, b){
return a.customer > b.customer? 1: -1;
});
然后我像这样进行排序:
data = $.map(data, function(k, v) {
return [k];
});
data = data.sort(function(a, b){
return a.customer > b.customer? 1: -1;
});
它工作得很好,但现在我想先按日期变量排序,然后再按客户变量排序。就像SQL中排序函数的工作方式一样(…按日期描述排序,客户asc;
)
但是,我真正想做的其实要简单得多。对日期值进行排序时,我只想区分null
和!空值
值。结果是所有的空值将被分组在一起,而所有的非空值将被分组在一起
之后,所有顶级对象都应该按customer
顺序排列
我是根据我认为它应该如何工作而提出这个想法的:
data = data.sort(function(a, b){
if (a.fin_date !== null){
return 1;
}
return a.customer > b.customer? 1: -1;
});
这是一种工作。它将所有的null
值排序到开头,并且所有的null值按正确的字母顺序排列,但是所有其他的fin\u date
值(!null1
)不按字母顺序排列。根据fin_date
,它们也不符合顺序。fin_date
不等于null
的对象似乎没有任何特定顺序
这就是我的问题:我需要具有fin date
!=<代码>空按字母顺序排列
谢谢 你根本没有比较日期。尝试类似以下排序函数的操作:
function(a, b) {
var aDate = new Date(a.fin_date),
bDate = new Date(b.fin_date);
if (aDate < bDate) return -1;
else if (aDate > bDate) return 1;
return a.customer > b.customer ? 1: -1;
}
功能(a、b){
var aDate=新日期(a.fin_日期),
b日期=新日期(b.fin_日期);
if(aDatebDate)返回1;
返回a.customer>b.customer?1:-1;
}
这假设您的所有日期都晚于1970年(因为新日期(null)
是1970年1月1日00:00:00 GMT)
这是一个。我想你是说你在对一组对象进行排序,对吗?对象属性没有按任何顺序存储。是的,你说得对,我更新了上面的代码。