如何在javascript中对日期数组排序

如何在javascript中对日期数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有下面的日期数组,我想按加入顺序排序。我试过了,但没有得到积极的结果 var arr = [ [ '02/13/2015', 0.096 ], [ '11/15/2013', 0.189 ], [ '05/15/2014', 0.11 ], [ '12/13/2013', 0.1285 ], [ '01/15/2013', 0.12 ], [ '01/15/2014', 0.11 ], [ '02/14/2014', 0.11 ], [ '03/14/2014',

我有下面的日期数组,我想按加入顺序排序。我试过了,但没有得到积极的结果

var arr = [ [ '02/13/2015', 0.096 ],
  [ '11/15/2013', 0.189 ],
  [ '05/15/2014', 0.11 ],
  [ '12/13/2013', 0.1285 ],
  [ '01/15/2013', 0.12 ],
  [ '01/15/2014', 0.11 ],
  [ '02/14/2014', 0.11 ],
  [ '03/14/2014', 0.11 ],
  [ '01/15/2015', 0.096 ],
  [ '07/15/2015', 0.096 ],
  [ '04/15/2013', 0.12 ],
  [ '04/15/2014', 0.11 ],
  [ '05/15/2013', 0.12 ],
  [ '06/14/2013', 0.12 ],
  [ '06/16/2014', 0.11 ],
  [ '07/15/2013', 0.12 ],
  [ '07/15/2014', 0.11 ],
  [ '03/16/2015', 0.096 ]]
我的代码

arr.sort(function(a,b){
  return new Date(a[0][0]) - new Date(b[0][0]);
});

您将获取日期字符串中的第一个字符,将它们转换为
date
实例,并使用它们进行比较

但是,您应该实际使用日期字符串,将其转换为
Date
实例并进行比较

arr.sort(function (a, b) {
  return new Date(a[0]) - new Date(b[0]);
});
输出

[ [ '01/15/2013', 0.12 ],
  [ '04/15/2013', 0.12 ],
  [ '05/15/2013', 0.12 ],
  [ '06/14/2013', 0.12 ],
  [ '07/15/2013', 0.12 ],
  [ '11/15/2013', 0.189 ],
  [ '12/13/2013', 0.1285 ],
  [ '01/15/2014', 0.11 ],
  [ '02/14/2014', 0.11 ],
  [ '03/14/2014', 0.11 ],
  [ '04/15/2014', 0.11 ],
  [ '05/15/2014', 0.11 ],
  [ '06/16/2014', 0.11 ],
  [ '07/15/2014', 0.11 ],
  [ '01/15/2015', 0.096 ],
  [ '02/13/2015', 0.096 ],
  [ '03/16/2015', 0.096 ],
  [ '07/15/2015', 0.096 ] ]

您将获取日期字符串中的第一个字符,将它们转换为
date
实例,并使用它们进行比较

但是,您应该实际使用日期字符串,将其转换为
Date
实例并进行比较

arr.sort(function (a, b) {
  return new Date(a[0]) - new Date(b[0]);
});
输出

[ [ '01/15/2013', 0.12 ],
  [ '04/15/2013', 0.12 ],
  [ '05/15/2013', 0.12 ],
  [ '06/14/2013', 0.12 ],
  [ '07/15/2013', 0.12 ],
  [ '11/15/2013', 0.189 ],
  [ '12/13/2013', 0.1285 ],
  [ '01/15/2014', 0.11 ],
  [ '02/14/2014', 0.11 ],
  [ '03/14/2014', 0.11 ],
  [ '04/15/2014', 0.11 ],
  [ '05/15/2014', 0.11 ],
  [ '06/16/2014', 0.11 ],
  [ '07/15/2014', 0.11 ],
  [ '01/15/2015', 0.096 ],
  [ '02/13/2015', 0.096 ],
  [ '03/16/2015', 0.096 ],
  [ '07/15/2015', 0.096 ] ]

如果您只想按日期排序,我认为以下代码会有所帮助:

arr.sort(function(a,b){return new Date(a[0]) - new Date(b[0]);});

如果您只想按日期排序,我认为以下代码会有所帮助:

arr.sort(function(a,b){return new Date(a[0]) - new Date(b[0]);});
深受MDN启发。这对于较大的数据集很重要

var-arr=[
['02/13/2015', 0.096],
['11/15/2013', 0.189],
['05/15/2014', 0.11],
['12/13/2013', 0.1285],
['01/15/2013', 0.12],
['01/15/2014', 0.11],
['02/14/2014', 0.11],
['03/14/2014', 0.11],
['01/15/2015', 0.096],
['07/15/2015', 0.096],
['04/15/2013', 0.12],
['04/15/2014', 0.11],
['05/15/2013', 0.12],
['06/14/2013', 0.12],
['06/16/2014', 0.11],
['07/15/2013', 0.12],
['07/15/2014', 0.11],
['03/16/2015', 0.096]
];
//临时数组保存具有位置和排序值的对象
var mapped=arr.map(函数(el,i){
var d=el[0]。拆分('/');
返回{索引:i,值:新日期(d[2],d[0]-1,d[1]);
})
//对包含缩减值的映射数组进行排序
映射.排序(函数(a,b){
返回+(a.value>b.value)| |+(a.value===b.value)-1;
});
//用于生成订单的容器
var result=mapped.map(函数(el){
返回arr[el.index];
});
document.write(“”+JSON.stringify(结果,0,4)+“”)深受MDN启发。这对于较大的数据集很重要

var-arr=[
['02/13/2015', 0.096],
['11/15/2013', 0.189],
['05/15/2014', 0.11],
['12/13/2013', 0.1285],
['01/15/2013', 0.12],
['01/15/2014', 0.11],
['02/14/2014', 0.11],
['03/14/2014', 0.11],
['01/15/2015', 0.096],
['07/15/2015', 0.096],
['04/15/2013', 0.12],
['04/15/2014', 0.11],
['05/15/2013', 0.12],
['06/14/2013', 0.12],
['06/16/2014', 0.11],
['07/15/2013', 0.12],
['07/15/2014', 0.11],
['03/16/2015', 0.096]
];
//临时数组保存具有位置和排序值的对象
var mapped=arr.map(函数(el,i){
var d=el[0]。拆分('/');
返回{索引:i,值:新日期(d[2],d[0]-1,d[1]);
})
//对包含缩减值的映射数组进行排序
映射.排序(函数(a,b){
返回+(a.value>b.value)| |+(a.value===b.value)-1;
});
//用于生成订单的容器
var result=mapped.map(函数(el){
返回arr[el.index];
});

document.write(“”+JSON.stringify(结果,0,4)+“”)
对于初学者来说,
a
是一个类似于
['11/15/2013',0.189]
的数组,因此
a[0][0]
将导致
'1'
。。但是,这仍然需要工作,因为
新日期(a[0])
-例如
新日期('11/15/2013')
-是定义不清的行为。我建议处理这种情况,但可以手动解析日期并使用
newdate(y,m,d)
:在询问如何将字符串转换为日期时,此类示例并不短缺。关于如何“正确”创建日期,请参见,,,etc对于初学者,
a
是类似
['11/15/2013',0.189]的数组
所以
a[0][0]
将导致
'1'
。。但是,这仍然需要工作,因为
新日期(a[0])
-例如
新日期('11/15/2013')
-是定义不清的行为。我建议处理这种情况,但可以手动解析日期并使用
newdate(y,m,d)
:在询问如何将字符串转换为日期时,此类示例并不缺乏。有关如何“正确”创建日期,请参见,、etcFWIW,请参阅我在主要帖子上的评论。将特定于区域设置的字符串传递给日期构造函数定义错误的behavior.FWIW,请参阅我在主要帖子上的评论。将特定于区域设置的字符串传递给日期构造函数的行为定义错误。出于历史目的,月份应为0..11出于历史目的,月份应为0..11