使用Angular4按年份对Json文件数据进行排序

时间:2018-07-18 15:25:33

标签: json angular sorting date

我在json文件中有一些数据,但是顺序错误,我需要按财务年度而不是常规年度显示数据。

例如,代替1月17日,2月17日,3月17日,4月17日,5月17日,6月17日,7月17日,8月17日,9月17日,10月17日,11月17日,12月17日。 它需要是3月17日,4月18日,5月18日,6月18日,7月18日,8月​​18日,9月18日,10月18日,11月18日,12月18日,1月19日,2月19日,4月19日,3月19日。

如何对json文件数据进行排序,使其以第二顺序显示?

HTML: 这是用于显示月份数据的HTML代码。

<table id ="t2">
                    <tr>
                        <th class="line">Line 1</th>
                        <th class="y18" *ngFor="let volumes of volumes">{{ volumes.month | uppercase }}</th>
                    </tr>

JSON: 这是JSON文件的示例。

{
    "id": 1,
    "month": "2017-03-01",
    "line": 1,
    "modelVolumes": [
        {
            "id": 367,
            "model": "car1",
            "number": 615
        },
        {
            "id": 368,
            "model": "car2",
            "num": 5925,
        },
        {
            "id": 369,
            "model": "car3",
            "num": 0
        }
    ]
},
{
        "id": 2,
        "month": "2017-04-01",
        "line": 1,
        "modelVolumes": [ ]
},
{
    "id": 12,
    "month": "2018-02-01",
    "line": 1,
    "modelVolumes": []
}

为了更好地理解,这是只有几个月的json文件: {             “ id”:2             “ month”:“ 2017-03-01”, } {             “ id”:2             “ month”:“ 2017-04-01”, } {             “ id”:2             “ month”:“ 2017-05-01”, } {             “ id”:2             “ month”:“ 2017-06-01”, } {             “ id”:2             “ month”:“ 2017-07-01”, } {             “ id”:2             “ month”:“ 2017-08-01”, } {             “ id”:2             “ month”:“ 2017-09-01”, } {             “ id”:2             “ month”:“ 2017-10-01”, } {             “ id”:2             “ month”:“ 2017-04-01”, } {             “ id”:2             “ month”:“ 2017-04-01”, } {             “ id”:2             “ month”:“ 2017-11-01”, } {             “ id”:2             “ month”:“ 2017-12-01”, } {             “ id”:2             “ month”:“ 2018-01-01”, } {             “ id”:2             “ month”:“ 2018-02-01”, } {             “ id”:2             “ month”:“ 2018-03-01”, } {             “ id”:2             “ month”:“ 2018-04-01”, } {             “ id”:2             “ month”:“ 2018-05-01”, } {             “ id”:2             “ month”:“ 2017-03-01”, } {             “ id”:2             “ month”:“ 2017-04-01”, }

1 个答案:

答案 0 :(得分:0)

请尝试以下类似方法。这应该使您对如何为数据实现它有一个好主意。

// Code goes here
var financialYear = 2001;

var dates = ['2000-05-01', '2001-04-01', '2001-05-01', '2001-03-01', '2001-02-01', '2002-02-01', '2002-03-01', '2002-04-01', '2002-05-01'];

var filteredDates = dates.filter(function(date){
  date = new Date(date);
        
  var year = date.getFullYear();
  var mon = date.getMonth();
  
  if((year === financialYear && mon > 1) || (year === financialYear + 1 && mon < 4)){
    return true;
  }
  
  return false;
});

console.log('Filtered Dates: ', filteredDates);

var sortedDates = filteredDates.sort(function(d1, d2){
  return new Date(d1) - new Date(d2);
})

console.log('Sorted Dates: ', sortedDates);