使用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});
翻阅古今
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&&b if(aIsToday){ returnbIsToday?b-a:-1;}else{returnbIsToday?1:b-a;}});
添加回答
举报
0/150
提交
取消