我在Java语言中遇到 <table class="table table-bordered">
<h1 align="center">List of Science Book Records</h1>
<thead>
<tr>
<th>Book Name</th>
<th>Author Name</th>
<th>Publish Date</th>
</tr>
</thead>
<tbody class="mypanel">
<script>
$.getJSON('https://openlibrary.org/subjects/science.json', function(data) {
for (var i=0;i<data.length;i++) {
console.log("hii");
var text = `<tr><td>${data.works[i].title}</td>
<td>${data.works[i].authors[i].name}</td>
<td>${data.name}</td></tr>`
$(".mypanel").html(text);
}
});
</script>
</tbody>
</table>
的问题。我的问题是我有2个DateTime
范围数组。例如:
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},
];
这是一个组合问题,而不是排序问题。例如:从1:00-3:00与2:00-5:00相结合,结果将是:[1:00-2:00、2:00-3:00、3:00-5:00]
如果您有任何想法,请告诉我。
提前谢谢!
答案 0 :(得分:0)
您可以使用Array.concat组合两个数组,然后使用自定义比较器对它们进行适当排序。
const output = list1.concat(list2).sort((a, b) => a.start - b.start);
答案 1 :(得分:0)
现在建议使用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);
});
答案 2 :(得分:0)
这里的问题是您有一个日期,而不是数字或字符串,这就是为什么排序不起作用的原因。您可以将字符串设置为日期:
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)