按升序排序周数和年份

Sorting week number and year in ascending order

本文关键字:周数 升序 排序      更新时间:2023-09-26

是否可以按升序对特定格式的日期数组进行排序?格式包括年份和星期数,如下所示:

未排序数组的摘录:

("2014 - 03","2013 - 01年","2013 - 02年","2014 - 03")

期望的排序数组结果:

["2013 - 01", "2013 - 02", "2014 - 03"]

我想使用比较函数来实现javascript和D3.js中的排序算法

试试这样:

var L = ["2014 - 03", "2013 - 01", "2013 - 02", "2014 - 03"]
L.sort(function(a, b){ 
    var y1 = 1 * a.split(" - ")[0],
        y2 = 1* b.split(" - ")[0],
        m1 = 1 * a.split(" - ")[1],
        m2 = 1 * b.split(" - ")[1];
    if (y1 != y2) return d3.ascending(y1, y2);
    else return d3.ascending(m1, m2);
});

可以使用内置的Array排序函数对数组进行排序,该函数采用一个可选函数来比较一对元素。然后可以使用d3.ascending按年升序对元素排序,如果年份相同,则按月排序。

注意,我不确定您是否想要删除重复的元素,就像您在示例中所做的那样。您可以在数组排序之前或之后轻松地执行此操作(参见此SO答案):

L = L.filter(function(d, i){ return L.indexOf(d) == i; })