Javascript 日期格式无效时按日期对json排序

Javascript 日期格式无效时按日期对json排序,javascript,json,node.js,date,Javascript,Json,Node.js,Date,我有一个json: module.exports = [ { "date": "01-2012" }, { "date": "12-2011" }, { "date": "01-2014" }, { "date": "08-2015" } ]; 我想

我有一个json:

    module.exports = [
         {
           "date": "01-2012"
         },
         {
           "date": "12-2011"
         },
         {
           "date": "01-2014"
         },
         {
           "date": "08-2015"
         }
    ];
我想要按日期排序,但问题是这不是一个有效的格式(MM-YYYY),这是可能的吗?有人能帮我一下吗


谢谢。

是的,这是可能的!要对该数组进行排序,可以使用数组的sort方法将要用于排序的回调传递给该数组

在您的示例中,您可以执行以下操作:

function parseMyDate( date_value ) {
    return new Date( date_value.replace(/([0-9]{1,2})\-([0-9]{4})/, "$2-$1-01") );
}

module.exports.sort(function(a, b) {
    return parseMyDate( a.date ) - parseMyDate( b.date );
});
这里有一个正在运行的示例,包括解决方案


我希望这能有所帮助。

您想在哪里分类?在后端?你能更好地解释一下你在做什么吗,也许会显示更多的代码?是的,我正在尝试在后端导出javascript(node.js).rdgfuents,非常感谢,但是。。如果我要求不多,你能解释一下正则表达式吗?我了解捕获组,但我想知道什么是$2-$1-01。当然$2包含在您的案例YYYY的第二个括号中捕获的内容。另一方面,$1包含正则表达式在第一个括号中捕获的内容,在您的例子中,这是MM。然后我为day部分添加01,这样我就可以使用ISO格式的字符串date来创建日期的实例。例如:“12-2011”将转换为“2011-12-01”以创建日期对象这是:
新日期('2011-12-01')
。有道理吗?