![](/img/trans.png)
[英]results “join” the array does not match the date in javascript from php
[英]javascript - join 2 array of date
我在Javascript中遇到DateTime
问题。 我的问题是我有2个DateTime
范围数组。 例如:
var list1 = [
{start: 2018-08-28 00:00:00, end: 2018-08-28 04:00:00},
{start: 2018-08-28 04:00:00, end: 2018-08-28 10:00:00},
{start: 2018-08-28 12:00:00, end: 2018-08-28 14:00:00},
{start: 2018-08-28 20:00:00, end: 2018-08-28 22:00:00},
];
var list2 = [
{start: 2018-08-28 03:00:00, end: 2018-08-28 06:00:00},
{start: 2018-08-28 11:00:00, end: 2018-08-28 11:30:00},
{start: 2018-08-28 13:00:00, end: 2018-08-28 17:00:00},
];
合并两个列表后,结果将是:
result = [
{start: 2018-08-28 00:00:00, end: 2018-08-28 03:00:00},
{start: 2018-08-28 03:00:00, end: 2018-08-28 04:00:00},
{start: 2018-08-28 04:00:00, end: 2018-08-28 06:00:00},
{start: 2018-08-28 06:00:00, end: 2018-08-28 10:00:00},
{start: 2018-08-28 11:00:00, end: 2018-08-28 11:30:00},
{start: 2018-08-28 12:00:00, end: 2018-08-28 13:00:00},
{start: 2018-08-28 13:00:00, end: 2018-08-28 14:00:00},
{start: 2018-08-28 14:00:00, end: 2018-08-28 17:00:00},
{start: 2018-08-28 20:00:00, end: 2018-08-28 22:00:00},
];
这是一个组合问题,而不是排序问题。 例如:从1:00-3:00与2:00-5:00相结合,结果将是:[1:00-2:00、2:00-3:00、3:00-5:00] 。
如果您有任何想法,请告诉我。
先感谢您!
您可以使用Array.concat组合两个数组,然后使用自定义比较器对它们进行适当排序。
const output = list1.concat(list2).sort((a, b) => a.start - b.start);
现在建议使用ES6语法来连接2个数组:下面的示例
result = [...list1, ...list2];
result.sort(function(a,b){
// Turn your strings into dates and then subtract them
// to get a value that is either negative, positive, or zero.
return new Date(b.start) - new Date(a.start);
});
这里的问题是您有日期 ,而不是数字或字符串 ,这就是为什么排序不起作用的原因。 您可以将字符串设置为日期:
var list1 = [ {start: "2018-08-28 00:00:00", end: "2018-08-28 04:00:00"}, {start: "2018-08-28 04:00:00", end: "2018-08-28 10:00:00"}, {start: "2018-08-28 12:00:00", end: "2018-08-28 14:00:00"}, {start: "2018-08-28 20:00:00", end: "2018-08-28 22:00:00"}, ]; var list2 = [ {start: "2018-08-28 03:00:00", end: "2018-08-28 06:00:00"}, {start: "2018-08-28 11:00:00", end: "2018-08-28 11:30:00"}, {start: "2018-08-28 13:00:00", end: "2018-08-28 17:00:00"}, ]; var result = list1.concat(list2).sort((a, b) => new Date(a.start) - new Date(b.start)); console.log(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.