【问题标题】:Sort Array of Objects by Date按日期对对象数组进行排序
【发布时间】:2015-06-23 21:21:56
【问题描述】:

我正在使用jLinq 查询ArrayObjects
这是我的Array of Objects

wo:
 [{ ID: 1, 'CreatedYM': '2015-Jun'},
  { ID: 2, 'CreatedYM': '2014-May'}, 
  { ID: 3, 'CreatedYM': '2015-Jan'}, 
  { ID: 4, 'CreatedYM': '2015-Aug'}, 
  { ID: 5, 'CreatedYM': '2014-Dec'}]

这是我的查询:

jlinq.from( wo ).group( "CreatedYM" );

我希望它返回按 CreatedYM 排序的数组,如下所示:

 [{ ID: 2, 'CreatedYM': '2014-May'},
  { ID: 5, 'CreatedYM': '2014-Dec'}, 
  { ID: 3, 'CreatedYM': '2015-Jan'},
  { ID: 1, 'CreatedYM': '2015-Jun'}, 
  { ID: 4, 'CreatedYM': '2015-Aug'},]

有可能吗?

【问题讨论】:

    标签: jquery arrays linq sorting


    【解决方案1】:

    您可以使用Array.sort 函数对数组进行排序

    var arr =  [{ ID: 1, 'CreatedYM': '2015-Jun'},
      { ID: 2, 'CreatedYM': '2014-May'}, 
      { ID: 3, 'CreatedYM': '2015-Jan'}, 
      { ID: 4, 'CreatedYM': '2015-Aug'}, 
      { ID: 5, 'CreatedYM': '2014-Dec'}
    ];
    var sortedarr = arr.sort(function(a,b){   
        // convert them into dates
        var d1 = new Date(Date.parse(a.CreatedYM));
        var d2 = new Date(Date.parse(b.CreatedYM));
        return d1 > d2 ? 1  // if d1 > d2 return 1
        : d1 < d2 ? -1 // if d1 < d2 return -1
        : 0; // else return 0
    });
    

    FIDDLE

    或者更短的版本

    var sortedarr = arr.sort(function(a,b){    
        return new Date(Date.parse(a.CreatedYM)) - new Date(Date.parse(b.CreatedYM));   
    });
    

    FIDDLE

    【讨论】:

      【解决方案2】:

      '2014-May' 可能不是有效的日期时间...(即无法排序) 首先使用有效的日期时间填充数组,例如'2014/05/01' 然后您可以对其进行排序,最后通过他们的文档将格式投影(选择)为 YYYY-MM...jlinq.from(wo).sort("CreatedYM").group("CreatedYM" )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-05
        • 2011-10-30
        • 2015-02-25
        • 2013-10-26
        • 1970-01-01
        相关资源
        最近更新 更多