Javascript JS:按日期和时间对数组排序

Javascript JS:按日期和时间对数组排序,javascript,arrays,sorting,date,time,Javascript,Arrays,Sorting,Date,Time,这是生成上述输出的代码: [09.02.2017 - 10:40:06][NOTICE] - Start looping through invoices from Teamleader.. [08.02.2017 - 10:24:26][NOTICE] - Start looping through invoices from Teamleader.. [08.02.2017 - 10:29:24][NOTICE] - Start looping through invoices from T

这是生成上述输出的代码:

[09.02.2017 - 10:40:06][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:24:26][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:29:24][NOTICE] - Start looping through invoices from Teamleader..

您可以使用数组上的函数
sort()
和comparison函数来比较日期。我不知道你想比较什么,但这里有一个简单的例子

[09.02.2017 - 10:40:06][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:29:25][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:24:26][NOTICE] - Start looping through invoices from Teamleader..

您可以使用数组上的函数
sort()
和comparison函数来比较日期。我不知道你想比较什么,但这里有一个简单的例子

[09.02.2017 - 10:40:06][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:29:25][NOTICE] - Start looping through invoices from Teamleader..
[08.02.2017 - 10:24:26][NOTICE] - Start looping through invoices from Teamleader..

您可以使用sort函数对数组进行任意排序,在该函数中,您可以指定数组的排序依据:

下面是一个适合您需要的示例:

var数据=[
“[09.02.2017-10:40:06][通知]-开始循环查看团队领导的发票]”,
“[08.02.2017-10:24:26][通知]-开始循环查看团队领导的发票]”,
“[08.02.2017-10:29:24][通知]-开始循环查看团队领导的发票]”
];
data.sort(
函数(a,b){
//a和b是列表中应该进行比较的两个元素
var a_date=a.substring(1,22);//仅从字符串中获取日期
var b_date=b.substring(1,22);//仅从字符串中获取日期
//我们比较这些字符串来排序。
如果(a_日期b_日期)
返回-1;
返回0;
}
);

控制台日志(数据)您可以使用排序函数对数组进行排序,您可以在该函数中指定排序依据:

下面是一个适合您需要的示例:

var数据=[
“[09.02.2017-10:40:06][通知]-开始循环查看团队领导的发票]”,
“[08.02.2017-10:24:26][通知]-开始循环查看团队领导的发票]”,
“[08.02.2017-10:29:24][通知]-开始循环查看团队领导的发票]”
];
data.sort(
函数(a,b){
//a和b是列表中应该进行比较的两个元素
var a_date=a.substring(1,22);//仅从字符串中获取日期
var b_date=b.substring(1,22);//仅从字符串中获取日期
//我们比较这些字符串来排序。
如果(a_日期b_日期)
返回-1;
返回0;
}
);

控制台日志(数据)如果必须这样做,我会将其转换为一个真实数组,然后使用如下函数:

[/*...*/].sort(function(a, b){
    //here a and b stand for your dates. you will need to adjuste your code to  make it works since we have very little information about it.
    return Date.compare(a, b);
});
功能排序日期(a,b){
var aDateField=a.DateField.toLowerCase();
var bDateField=b.DateField.toLowerCase();
返回((aDateFieldbDateField)?1:0));
}
var data=allText.split(“\n”);
对于(变量i=0,len=data.length;i

这是我经常使用的比较函数之一。希望能有所帮助。

如果必须这样做,我会将其转换为真实数组,然后使用如下函数:

[/*...*/].sort(function(a, b){
    //here a and b stand for your dates. you will need to adjuste your code to  make it works since we have very little information about it.
    return Date.compare(a, b);
});
功能排序日期(a,b){
var aDateField=a.DateField.toLowerCase();
var bDateField=b.DateField.toLowerCase();
返回((aDateFieldbDateField)?1:0));
}
var data=allText.split(“\n”);
对于(变量i=0,len=data.length;i

这是我经常使用的比较函数之一。希望能有所帮助。

在撰写本文时,其他解决方案要么不完整,要么包含错误。特别是,将日期排序为字符串,这会给出不正确的结果

您可以使用正则表达式和
Date
构造函数从行中提取和解析日期。从这里开始,只需对包含行的数组进行排序:

const数据=`
[09.02.2017-10:40:06][通知]-开始循环查看团队领导的发票。。
[08.02.2017-10:24:26][通知]-开始循环查看团队领导的发票。。
[08.02.2017-10:29:24][通知]-开始循环查看团队领导的发票`
.trim().split(“\n”)
函数dateFromLine(行){
常量结果=/^\[(.*?\]/.exec(行)
常量日期=结果[1]。替换(“-”,“”)
返回新日期(日期)
}
函数比较按日期(a,b){
返回日期行(b)-日期行(a)
}
data.sort(compareLinesByDate)

console.log(data.join('\n'))
撰写本文时,其他解决方案要么不完整,要么包含错误。特别是,将日期排序为字符串,这会给出不正确的结果

您可以使用正则表达式和
Date
构造函数从行中提取和解析日期。从这里开始,只需对包含行的数组进行排序:

const数据=`
[09.02.2017-10:40:06][通知]-开始循环查看团队领导的发票。。
[08.02.2017-10:24:26][通知]-开始循环查看团队领导的发票。。
[08.02.2017-10:29:24][通知]-开始循环查看团队领导的发票`
.trim().split(“\n”)
函数dateFromLine(行){
常量结果=/^\[(.*?\]/.exec(行)
常量日期=结果[1]。替换(“-”,“”)
返回新日期(日期)
}
函数比较按日期(a,b){
返回日期行(b)-日期行(a)
}
data.sort(compareLinesByDate)

console.log(data.join('\n'))
当您键入此内容时,我有点太激动了,接受了另一个答案。如果我检查typeof result==='array'(dateFromLine(line)),代码在传递不同的字符串时不会失败,对吗?只有当
result
是数组时才继续,应该可以防止运行时错误,但您仍然必须决定如何处理这些格式错误的行。另一件需要记住的事情是,对于某些行,
结果[1]
可能存在,但不是有效日期,例如,对于行,
[foo][NOTICE]-开始循环查看团队领导的发票。
。当然,您的方法更好,因为更适合