2017-12-08 12 views
4

データを日付順にソートしようとしています。データは実際にはdiv - > spanの下にHTMLで保存されます。 しかし、私は次のような機能を作っていますが、何らかの理由でそれが期待通りに正しく動作していません。JqueryとHTMLを使用して日付でソートする

case "Import_Date_asc": 
    var elems = $.makeArray($review_items); 

    elems.sort(function(a, b) { 
     var a_date = $(a).find('.panel-heading .data-source').text(), 
      b_date = $(b).find('.panel-heading .data-source').text(); 

     a_date = a_date.split('/'); 
     a_date = a_date[1].split(' UTC'); 

     b_date = b_date.split('/'); 
     b_date = b_date[1].split(' UTC'); 

     console.log(a_date[0], b_date[0]); 

     //return new Date(a_date[0]) > new Date(b_date[0]); 
     return Date.parse(a_date[0]) > Date.parse(b_date[0]); 
    }); 

    $review_container.html(elems); 

    break; 

case "Import_Date_desc": 
    var elems = $.makeArray($review_items); 

    elems.sort(function(a, b) { 
     var a_date = $(a).find('.panel-heading .data-source').text(), 
      b_date = $(b).find('.panel-heading .data-source').text(); 

     a_date = a_date.split('/'); 
     a_date = a_date[1].split(' UTC'); 

     b_date = b_date.split('/'); 
     b_date = b_date[1].split(' UTC'); 

     console.log(a_date[0], b_date[0]); 

     //return new Date(a_date[0]) < new Date(b_date[0]); 
     return Date.parse(a_date[0]) < Date.parse(b_date[0]); 
    }); 

    $review_container.html(elems); 

    break; 

HTMLは次のようになります。あなたは私がここで間違ってやっているか知っている場合

<div class="review-item panel panel-primary" data-ldn="8643" data-pse="43460"> 
     <div class="panel-heading"> 
<span class="data-title">Dom(i23)</span> 
<span class="data-source pull-right">Import/2017-12-07 14:35 UTC</span> 
</div></div> 

は非常にaprociatedされますしてください。

答えて

3

あなたの日付を変換するために解析が動作していないようです。 はしかし、私はより良い

case "Import_Date_asc": 
    var elems = $.makeArray($review_items); 

    elems.sort(function(a, b) { 
     var a_date = $(a).find('.panel-heading .data-source').text(), 
      b_date = $(b).find('.panel-heading .data-source').text(); 

     a_date = a_date.split('/'); 
     a_date = a_date[1].split(' UTC'); 
     a_date = a_date[0]; 
     a_date = a_date.replace('-', ''); 
     a_date = a_date.replace('-', ''); 
     a_date = a_date.replace(' ', ''); 
     a_date = a_date.replace(':', ''); 

     b_date = b_date.split('/'); 
     b_date = b_date[1].split(' UTC'); 
     b_date = b_date[0]; 
     b_date = b_date.replace('-', ''); 
     b_date = b_date.replace('-', ''); 
     b_date = b_date.replace(' ', ''); 
     b_date = b_date.replace(':', ''); 

     return a_date.localeCompare(b_date); 
    }); 

    $review_container.html(elems); 

    break; 

case "Import_Date_desc": 
    var elems = $.makeArray($review_items); 

    elems.sort(function(a, b) { 
     var a_date = $(a).find('.panel-heading .data-source').text(), 
      b_date = $(b).find('.panel-heading .data-source').text(); 

     a_date = a_date.split('/'); 
     a_date = a_date[1].split(' UTC'); 
     a_date = a_date[0]; 
     a_date = a_date.replace('-', ''); 
     a_date = a_date.replace('-', ''); 
     a_date = a_date.replace(' ', ''); 
     a_date = a_date.replace(':', ''); 

     b_date = b_date.split('/'); 
     b_date = b_date[1].split(' UTC'); 
     b_date = b_date[0]; 
     b_date = b_date.replace('-', ''); 
     b_date = b_date.replace('-', ''); 
     b_date = b_date.replace(' ', ''); 
     b_date = b_date.replace(':', ''); 

     return a_date.localeCompare(b_date) * -1; 
    }); 

    $review_container.html(elems); 

    break; 

が、私はそれが動作するはずと信じて、このコードを試してみてうまくいくlocalCompareを使用して信じています。それは私のテストで動作します。 [localeCompare()][1]メソッドも参照してください。

+0

はい@DirWolfそのコードは私にとって完璧に機能します。それは問題を解決しました。すごい仕事。! –

関連する問題