var myArray = [ '_aaaa_2013-09-25_ssss9.txt', '_aaaa_2013-09-25_ssss8.txt', '_aaaa_2013-09-26_ssss1.txt', '_aaaa_2013-09-25_ssss10.txt', '_aaaa_2013-09-26_ssss2.txt', '_aaaa_2013-09-25_ssss13.txt', '_aaaa_2013-09-25_ssss5.txt', '_aaaa_2013-09-25_ssss6.txt', '_aaaa_2013-09-25_ssss7.txt' ];
I need to sort an array by date and number.
The result should be
var result = [ '_aaaa_2013-09-25_ssss5.txt', '_aaaa_2013-09-25_ssss6.txt', '_aaaa_2013-09-25_ssss7.txt', '_aaaa_2013-09-25_ssss8.txt', '_aaaa_2013-09-25_ssss9.txt', '_aaaa_2013-09-25_ssss13.txt', '_aaaa_2013-09-26_ssss1.txt', '_aaaa_2013-09-26_ssss2.txt' ];
I tried below code.this will do sorting only by date, but I need to sort by the number that is before '.txt'. How can i do this.
myArray.sort(function (a, b) { var timeStamp1 = a.substring(a.indexOf('_aaaa') + 6, a.indexOf('_ssss')); var timeStamp2 = b.substring(b.indexOf('_aaaa') + 6, b.indexOf('_ssss')); timeStamp1 = new Date(Date.UTC(timeStamp1[0], timeStamp1[1], timeStamp1[2])); timeStamp2 = new Date(Date.UTC(timeStamp2[0], timeStamp2[1], timeStamp2[2])); return (timeStamp1 > timeStamp2) ? 1 : (timeStamp2 > timeStamp1 ? -1 : 0); });
source share