gpt4 book ai didi

javascript - 根据时间和组对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 11:33:16 24 4
gpt4 key购买 nike

假设我有一个看起来像这样的数组

[ [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 对象对日期进行排序,使用字符串方法 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)

关于javascript - 根据时间和组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com