我有一个类似于这样的对象数组:
对象数组看起来总是像这个未排序的。首先是运输号码,然后是时间。这要归功于我正在使用的api。
我的问题是:如何只按时间对这个数组进行排序?
我尝试使用排序函数,如下所示,在存储对象数组的变量上,但没有成功:
allBuses.sort(function(a,b){
var c = a.time;
var d = b.time;
if(c > d){
return d
}
else return c发布于 2017-01-16 10:00:50
您可以将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);.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2017-01-16 10:06:02
您可以使用Array.prototype.sort()来比较时间之外的数字:
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 getNumber = t => +t.replace(/:/g, '')
allBuses.sort(({ time: a }, { time: b }) => getNumber(a) - getNumber(b))
console.log(allBuses).as-console-wrapper { max-height: 100% !important; top: 0; }
此外,您还可以使用Array.prototype.sort()比较时间字符串:
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"}]
allBuses.sort(({ time: a }, {time: b }) => a > b ? 1 : a < b ? -1 : 0)
console.log(allBuses).as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2017-01-16 10:03:48
您将返回c或d,这是时间值。你的功能需要返回..。
https://stackoverflow.com/questions/41673669
复制相似问题