为了账号安全,请及时绑定邮箱和手机立即绑定

array sort 排序更接近今天的在前

array sort 排序更接近今天的在前

噜噜哒 2019-05-25 15:56:59
使用array.sort()在做一个以时间为纬度的列表排序,条件为今天的在最上方,里今天越近的越靠前,但是未来的所有都在过去的前面eg:今天为7月13日2017.7.132017.7.142017.7.152017.7.122017.7.11(实际为时间戳,为了方法表达以数字表示)这样的排序应该怎么写sort的function给后来者看因为项目是一个基于时间相关的,所以引用了momentjs如果你也需要momentjs可以参考我自答的方法,如果不需要引用可以参看我采纳的答案
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

看了你的方式,规则都自己写了就不需要reverse了
Object.keys(data).sort(function(a,b){
varda=moment(data[a].noteDate,'x').diff(moment(),'day')
vardb=moment(data[b].noteDate,'x').diff(moment(),'day')
if(da*db<0){returnda-db}
returnMath.abs(db)-Math.abs(da)
}).forEach(key=>{
//code
});
                            
查看完整回答
反对 回复 2019-05-25
?
翻阅古今

TA贡献1780条经验 获得超5个赞

vardate=newDate();
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0)
date.setMilliseconds(0);
//today中存储当天凌晨的时间戳
vartoday=date.valueOf();
//todayEnd中存储明天凌晨的时间戳
vartodayEnd=today+3600*24*1000;
/**
*假设timeArray是你要排序的数组,每一项是一个对象,timestamp字段存储时间戳
*注意该例子的时间戳是毫秒级别的,如果你的时间戳到秒,你需要把today和todayEnd除以1000
*/
timeArray.sort(function(a,b){
a=a.timestamp;
b=b.timestamp;
varaIsToday=a>=today&&avarbIsToday=b>=today&&bif(aIsToday){
returnbIsToday?b-a:-1;
}else{
returnbIsToday?1:b-a;
}
});
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信