Javascript 按升序对周数和年进行排序
是否可以按升序对具有特定格式的日期数组进行排序?格式包括年和周数,您可以在下面看到: 未排序数组的摘录: [“2014-03”、“2013-01”、“2013-02”、“2014-03”] 排序数组的所需结果: [“2013-01”、“2013-02”、“2014-03”]Javascript 按升序对周数和年进行排序,javascript,d3.js,Javascript,D3.js,是否可以按升序对具有特定格式的日期数组进行排序?格式包括年和周数,您可以在下面看到: 未排序数组的摘录: [“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(
我想使用一个比较函数来实现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);
});
您可以使用内置函数对数组进行排序,这需要一个可选函数来比较一对元素。然后,您可以使用d3.ascending
按年份升序排列元素,如果年份相同,则按月份升序排列元素
请注意,我不确定是否要删除重复的元素,就像您在示例中所做的那样。您可以在对数组排序之前或之后轻松执行此操作(请参阅):
[“2014-03”、“2013-01”、“2013-02”、“2014-03”].sort(函数(a,b){返回a.replace(/\D+/g,”)-b.replace(/\D+/g,”);)
L = L.filter(function(d, i){ return L.indexOf(d) == i; })