如何自定义排序一个2D javascript对象
how to custom sort a 2D javascript object?
我开始这个问题:如何排序对象的JS对象?
从2个评论中,我想出了我最好的方法来排序一个Javascript对象的对象(只是一个2D对象)。
假设data
是一个2D对象变量,我按照内部对象的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
的对象按字母顺序排列。
谢谢!
你根本没有比较日期。试试下面这个排序函数:
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;
}
假设您的所有日期都晚于1970年(因为new Date(null)
是01 Jan 1970 00:00:00 GMT)。
这是一个jsFiddle
相关文章:
- 如何在javascript中创建一个空的2d数组?下面是我想要创建的一个示例
- TypeError: matrix[y].push 在尝试使用 javascript 创建 2D 数组时不是一个函数
- 用Javascript从一个大的2D数组中编程创建一个字典
- 在 JavaScript 中的 2D 数组上创建一个方法
- HTMLUnit是否包括一个功能性的[HTML5]画布2D实现,能够将图像数据渲染回Java代码
- Mongo在单个字段上设置相交,这是一个2d数组
- 角度.js在 ng-repeat 中获取 2d 数组中最后一个元素的索引
- 康威'生活的游戏-如何伪造一个“;“无限”;2d平面
- 构建一个2d html5画布游戏,并尝试用javascript连接到服务器以创建播放器"高芯&”;
- 这些2D阵列包含不同结构的相同信息.如何将一个转换为另一个
- 如何/最好的方式创建一个2d数组来存储整数,JQuery/javascript
- 计算JavaScript数组元素的出现次数,并放入一个新的2d数组
- 不能让HTML5 2D上下文画一个点
- 求一个由2D数组组成的数组的长度
- 我如何存储数据从jquery到一个2D数组在php没有ajax
- 我如何访问一个2D数组在JavaScript,或D3.JS
- 确定一个2D点是否在四边形内
- 我如何使一个2d键数组在php
- 如何自定义排序一个2D javascript对象
- 在Javascript中为国际象棋游戏创建一个2D对象数组和int对象数组