備忘録

webの備忘録のために

jsonファイルの日付でのソート

jsonファイルでの書き出した日付でのソートをしたい場合。 sort関数の第二引数のtrue,falseで昇順、降順は変更することができる。

<!doctype html>
<html lang="">
<head>
  <meta charset="utf-8">
  <title>The HTML5 Herald</title>
  <meta name="description" content="The HTML5 Herald">
  <meta name="author" content="SitePoint">
  <script src="js/jquery.min.js"></script>
  <script>
    var data = [
        {"id":"news1", "publishDate":"2018/03/14 12:53:00"},
        {"id":"news2", "publishDate":"2018/04/14 12:54:00"},
        {"id":"news3", "publishDate":"2018/02/14 12:54:00"}
    ];

    $.each(data,function(i,item){
      var changedate = data[i].publishDate.replace(/\u002f/g,"").replace(" ","").replace(/:/g,"");
      data[i].publishDate = changedate;
    })

    var sort_by = function(field, reverse, primer){
        reverse = (reverse) ? -1 : 1;
        return function(a,b){
            a = a[field];
            b = b[field];
            if (typeof(primer) != 'undefined'){
                a = primer(a);
                b = primer(b);
            }
            if (a<b) return reverse * -1;
            if (a>b) return reverse * 1;
            return 0;
        }
    }
    $(function(){
        data.sort(sort_by('publishDate', true, parseInt));
    //    data.sort(sort_by('id', false, function(a){return a.toUpperCase()}));
        for (i = 0; i < data.length; i++) {
            $('#resultdate').append(data[i].publishDate +':'+ data[i].id +'<br />');
        }
    });
    </script>
</head>

<body>
<div id="resultdate"></div>


<script src="js/scripts.js"></script>
</body>
</html>

※表示結果
20180414125400:news2
20180314125300:news1
20180214125400:news3