[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..以下是生成上述输出的代码:
var data = allText.split("\n");
for(var i = 0, len = data.length; i < len; i++){
console.log(data[i]);
}是否可以在给定的日期和时间对数组进行排序?
下面是一个示例,说明了它应该是什么样子:
[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..发布于 2017-02-10 21:49:43
在撰写本文时,其他解决方案要么不完整,要么包含错误。特别是,accepted answer by rakwaht将日期排序为字符串,这会给出不正确的结果。
您可以使用正则表达式和Date构造函数从一行中提取和解析日期。从那里开始,只需对包含行的数组进行排序:
const data = `
[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..`
.trim().split('\n')
function dateFromLine(line) {
const result = /^\[(.*?)\]/.exec(line)
const date = result[1].replace("-", "")
return new Date(date)
}
function compareLinesByDate(a, b) {
return dateFromLine(b) - dateFromLine(a)
}
data.sort(compareLinesByDate)
console.log(data.join('\n'))
请注意,此代码假定每一行都以这种方式格式化。要使其更加健壮,还需要做更多的工作。
发布于 2017-02-10 21:39:42
您可以使用排序函数对数组进行排序,在该函数中,您可以指定应根据哪个基础对数组进行排序:
下面是一个符合您需求的示例:
var data = [
"[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]"
];
data.sort(
function(a, b){
// a and b are two elements in the list that are supposed to be compared
var a_date = a.substring(1, 22); //take only date from string
var b_date = b.substring(1, 22); //take only date from string
// We compare those strings to order it.
if ( a_date < b_date )
return 1;
if ( a_date > b_date )
return -1;
return 0;
}
);
console.log(data);
您可以在JS中找到一些对here函数的引用
发布于 2017-02-10 21:33:59
您可以在数组上使用函数sort()和一个比较函数来比较日期。我不知道你在试着比较什么,但这里有一个简单的例子。
[/*...*/].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);
});https://stackoverflow.com/questions/42160544
复制相似问题