admin管理员组文章数量:1405170
I have the following array:
[{id: 1, value : "value1", date: "2018-08-08", time: "15:27:17"},
{id: 2, value : "value2", date: "2018-08-09", time: "12:27:17"},
{id: 3, value : "value3", date: "2018-08-10", time: "17:27:17"},
{id: 4, value : "value4", date: "2018-08-11", time: "10:27:17"}]
How can I go about sorting the array from earliest to latest or vice versa?
I tried sorting by date, but sorting it by time swaps the order of record id 4 to id 3, because it has an earlier time value than record 3, but is technically by definition, later.
Given this array and json structure, how do I sort the array to take both fields (date
and time
) into consideration?
I have the following array:
[{id: 1, value : "value1", date: "2018-08-08", time: "15:27:17"},
{id: 2, value : "value2", date: "2018-08-09", time: "12:27:17"},
{id: 3, value : "value3", date: "2018-08-10", time: "17:27:17"},
{id: 4, value : "value4", date: "2018-08-11", time: "10:27:17"}]
How can I go about sorting the array from earliest to latest or vice versa?
I tried sorting by date, but sorting it by time swaps the order of record id 4 to id 3, because it has an earlier time value than record 3, but is technically by definition, later.
Given this array and json structure, how do I sort the array to take both fields (date
and time
) into consideration?
- Possible duplicate of How to sort date strings (format exmaple: 2014 7 23) in JavaScript? – Blue Commented Aug 9, 2018 at 2:32
- hello, the answer does not seem to consider a 2nd property time that is separate from date. – muffin Commented Aug 9, 2018 at 2:54
1 Answer
Reset to default 7Sort by the difference in the date
s, and if there is no difference, sort by the difference in the time
s, in a single .sort
function:
const arr = [{id: 1, value : "value1", date: "2018-08-08", time: "15:27:17"},
{id: 2, value : "value2", date: "2018-08-09", time: "12:27:17"},
{id: 3, value : "value3", date: "2018-08-10", time: "17:27:17"},
{id: 4, value : "value4", date: "2018-08-10", time: "01:27:17"},
{id: 5, value : "value5", date: "2018-08-10", time: "09:27:17"},
{id: 6, value : "value6", date: "2018-08-10", time: "23:27:17"},
{id: 7, value : "value7", date: "2018-08-10", time: "16:27:17"},
{id: 8, value : "value8", date: "2018-08-11", time: "10:27:17"}
];
arr.sort((a, b) => a.date.localeCompare(b.date) || a.time.localeCompare(b.time));
console.log(arr);
The difference in dates will be returned, except if they're the same, in which case the localCompare
will e out to 0
, and the difference in times will be returned instead.
To sort to descending instead, just switch the a
s and b
s:
const arr = [{id: 1, value : "value1", date: "2018-08-08", time: "15:27:17"},
{id: 2, value : "value2", date: "2018-08-09", time: "12:27:17"},
{id: 3, value : "value3", date: "2018-08-10", time: "17:27:17"},
{id: 4, value : "value4", date: "2018-08-10", time: "01:27:17"},
{id: 5, value : "value5", date: "2018-08-10", time: "09:27:17"},
{id: 6, value : "value6", date: "2018-08-10", time: "23:27:17"},
{id: 7, value : "value7", date: "2018-08-10", time: "16:27:17"},
{id: 8, value : "value8", date: "2018-08-11", time: "10:27:17"}
];
arr.sort((a, b) => b.date.localeCompare(a.date) || b.time.localeCompare(a.time));
console.log(arr);
本文标签: JavascriptSort array of objects by date then by timeStack Overflow
版权声明:本文标题:Javascript - Sort array of objects by date then by time - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744322356a2600563.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论