скажем, у меня есть массив, который выглядит так
[ [AAAA, 2016-01-01, 1:00 PM, FA1],
[AAAA, 2016-01-01, 12:30 AM, FA1],
[BBBB, 2016-01-02, 6:00 PM, FA1],
[BBBB, 2016-01-02, 5:00 PM, FA1],
[CCCC, 2016-01-03, 9:00 PM, FA1],
[CCCC, 2016-01-03, 7:00 PM, FA1] ]
Как отсортировать данные, чтобы они выглядели так.
[ [AAAA, 2016-01-01, 12:30 AM, FA1],
[AAAA, 2016-01-01, 1:30 PM, FA1],
[BBBB, 2016-01-02, 5:00 PM, FA1],
[BBBB, 2016-01-02, 6:00 PM, FA1],
[CCCC, 2016-01-03, 7:00 PM, FA1],
[CCCC, 2016-01-03, 9:00 PM, FA1] ]
пока это мой код, как бы он не сортировался по времени
var inputarr = [
["AAAA", "2016-01-01, 1:00 PM", "FA1"],
["AAAA", "2016-01-01, 12:30 AM", "FA1"],
["BBBB", "2016-01-02, 6:00 PM", "FA1"],
["BBBB", "2016-01-02, 5:00 PM", "FA1"],
["CCCC", "2016-01-03, 9:00 PM", "FA1"],
["CCCC", "2016-01-03, 7:00 PM", "FA1"]
]
map = {};
for (var element in inputarr) {
if (!map[inputarr[element][1]]) {
map[inputarr[element][1]] = [];
}
map[inputarr[element][1]].push(inputarr[element]);
}
output = [];
for (var key in map) {
output.push(map[key].shift());
output.push(map[key].pop());
}
console.log(output);
вы можете отсортировать дату с помощью объекта Date
и строки с использованием метода string localCompare
.
x = [
['AAAA', '2016-01-01', '1:00 PM', 'FA1'],
['AAAA', '2016-01-01', '12:30 AM', 'FA1'],
['BBBB', '2016-01-02', '6:00 PM', 'FA1'],
['BBBB', '2016-01-02', '5:00 PM', 'FA1'],
['CCCC', '2016-01-03', '9:00 PM', 'FA1'],
['CCCC', '2016-01-03', '7:00 PM', 'FA1']
]
x.sort((a, b) => {
let aDate = new Date('${a[1]} ${a[2]}'),
bDate = new Date('${b[1]} ${b[2]}');
if (+aDate == +bDate) {
return a[0].localeCompare(b[0])
}
return aDate - bDate;
})
console.log(x)