Javascript 如何对ISO 8601持续时间进行排序

Javascript 如何对ISO 8601持续时间进行排序,javascript,json,sorting,time,iso,Javascript,Json,Sorting,Time,Iso,如何在javascript中的两个相同时间之间对ISO 8601持续时间示例“P1DT02H26M”进行排序 我就这样试过了 var asc = true document.getElementById('durationSort').addEventListener('click',function(){ if(asc){ modifiedData.data.offers.sort(function(a, b) { var c = a.slices[0].duratio

如何在javascript中的两个相同时间之间对ISO 8601持续时间示例“P1DT02H26M”进行排序

我就这样试过了

var asc = true
document.getElementById('durationSort').addEventListener('click',function(){
  if(asc){
    modifiedData.data.offers.sort(function(a, b) {
      var c = a.slices[0].duration, d = b.slices[0].duration; 
      return c-d; 
    })
    asc = false
    offers(modifiedData)
    document.getElementById('durationarrow').innerHTML = '<i class="fas fa-hand-point-down" style="color:#01b1ef;"></i>'
    document.getElementById('arrivalarrow').innerHTML = null
    document.getElementById('depaturearrow').innerHTML = null
    document.getElementById('pricearrow').innerHTML = null
  }else{
    var list1 = modifiedData.data.offers
    list1.sort(function(a, b){
      var c = a.slices[0].duration, d = b.slices[0].duration; 
      return c-d; 
    })
    
    modifiedData.data.offers = list1.reverse()
    asc = true
    offers(modifiedData)
    document.getElementById('durationarrow').innerHTML = '<i class="fas fa-hand-point-up" style="color:#01b1ef;"></i>'
    document.getElementById('arrivalarrow').innerHTML = null
    document.getElementById('depaturearrow').innerHTML = null
    document.getElementById('pricearrow').innerHTML = null
  }
});
var asc=true
document.getElementById('durationSort')。addEventListener('click',function(){
如果(asc){
modifiedData.data.offers.sort(函数(a,b){
var c=a.slices[0]。持续时间,d=b.slices[0]。持续时间;
返回c-d;
})
asc=假
报价(修改数据)
document.getElementById('durationarrow')。innerHTML=''
document.getElementById('arrivalarrow')。innerHTML=null
document.getElementById('DepatureRow')。innerHTML=null
document.getElementById('pricearrow')。innerHTML=null
}否则{
var list1=modifiedData.data.offers
列表1.排序(函数(a,b){
var c=a.slices[0]。持续时间,d=b.slices[0]。持续时间;
返回c-d;
})
modifiedData.data.offers=list1.reverse()
asc=真
报价(修改数据)
document.getElementById('durationarrow')。innerHTML=''
document.getElementById('arrivalarrow')。innerHTML=null
document.getElementById('DepatureRow')。innerHTML=null
document.getElementById('pricearrow')。innerHTML=null
}
});

Moment.js包含以下功能:

一旦我们有了这个,就可以很容易地对持续时间列表进行排序,我们可以简单地将一个从另一个中减去以毫秒为单位的差值

let durations=[{minute:5,day:1},{hour:10},{day:1,hour:2,minute:26},{second:3},{day:20}];
功能排序持续时间(持续时间){
返回[…持续时间]。排序((a,b)=>{
返回时刻。持续时间(a)-时刻。持续时间(b);
})
}
日志(“未排序的持续时间:”,持续时间);
log(“排序的持续时间:”,排序的持续时间(持续时间))

您的代码有什么问题?有错误吗?您的实际结果和预期结果是什么?排序不起作用。在进行排序时,它没有按正确的升序和降序排列。我要正确的升序和降序。我必须按两次按钮才能得到答案。代码中没有错误。