hi,我想按从mysql返回的日期对本机数组进行排序。我想扩展本机数组,因此不必一遍又一遍地键入相同的方法
我该如何实现?
这是我的排序:
[...].sort((a, b) => {
return new Date(b.timestamp) - new Date(a.timestamp);
});
答案 0 :(得分:4)
我不是100%相信这确实比仅将数组传递给函数更好……但是您可以将排序包装在函数中并将其放在数组原型上。这样做的方便之处在于只能使用dateSort()
进行调用,但缺乏传递回调的灵活性:
Array.prototype.dateSort = function(desc = true) {
this.sort((a, b) => {
if (!desc) [a, b] = [b,a]
return new Date(b.timestamp) - new Date(a.timestamp);
});
}
// Prevent dateSort from showing up when iterating over object keys:
Object.defineProperty(Array.prototype, 'dateSort',{
enumerable: false
});
let arr = [
{timestamp: '1995-12-17T03:24:00'},
{timestamp: '1995-12-17T01:24:00'},
{timestamp: '1995-12-17T02:24:00'},
{timestamp: '1995-12-17T00:24:00'}
]
arr.dateSort()
console.log(arr)
arr.dateSort(false)
console.log(arr)
for (let i in arr){
// no datesort when enumerating
console.log(i)
}