jai*_*ikl 1 javascript arrays sorting api time
我有一个对象数组,看起来像这样:
对象数组将始终看起来像是未排序的。首先按运输编号,然后按时间。这是由于我使用的api。
我的问题是:我如何只能按时间排序此数组?
我尝试在存储对象数组的变量上使用排序函数,如下所示,但没有成功:
allBuses.sort(function(a,b){
var c = a.time;
var d = b.time;
if(c > d){
return d
}
else return c
Run Code Online (Sandbox Code Playgroud)
您可以将其time视为字符串并使用进行排序String#localeCompare。
var data = [{ transportnumber: '45', time: '10:28:00', date:"2017-01-16"}, { transportnumber: '45', time: '10:38:00', date:"2017-01-16" },{ transportnumber: '45', time: '10:48:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:12:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:24:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:52:00', date:"2017-01-16"}];
data.sort(function (a, b) {
return a.time.localeCompare(b.time);
});
console.log(data);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
您可以使用Array.prototype。toSorted()和解构赋值来对比较时间字符串进行排序:
const allBuses = [{ transportnumber: '45', time: '10:28:00', date:"2017-01-16"}, { transportnumber: '45', time: '10:38:00', date:"2017-01-16" },{ transportnumber: '45', time: '10:48:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:12:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:24:00', date:"2017-01-16" }, { transportnumber: '14', time: '10:52:00', date:"2017-01-16"}]
const sortedAllBuses = allBuses.toSorted(
({ time: a }, { time: b }) => a < b ? -1 : a > b ? 1 : 0
)
console.log(sortedAllBuses)Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)