按日期排序对象数组

时间:2015-06-23 21:21:57

标签: jquery arrays linq sorting

我正在使用jLinq来查询Array Objects的{​​{1}} 这是我Array的{​​{1}}:

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'}]

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

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

有可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分:1)

&#39; 2014-五月&#39;可能不是一个有效的约会时间...(即不能排序) 首先使用有效的日期时间填充数组,例如&#39; 2014/05/01 39#;然后你可以对它进行排序,最后投影(选择)格式为YYYY-MM ... jlinq.from(wo).sort(&#34; CreatedYM&#34;)。group(&#34; CreatedYM&#34;)通过他们的文件