If the goal is to create a separate array for each day of the week, sorting is not required.
myData = ["['2013-04-15', 26]", "['2013-04-16', 10]", "['2013-04-17', 51]", "['2013-04-18', 46]", "['2013-04-19', 32]", "['2013-04-20', 50]", "['2013-04-21', 26]", "['2013-04-22', 31]", "['2013-04-23', 48]", "['2013-04-24', 821]", "['2013-04-25', 917]", "['2013-04-26', 949]", "['2013-04-27', 405]", "['2013-04-28', 593]", "['2013-04-29', 925]", "['2013-04-30', 877]", "['2013-05-01', 277]", "['2013-05-02', 112]", "['2013-05-03', 115]", "['2013-05-04', 62]", "['2013-05-05', 74]", "['2013-05-06', 76]", "['2013-05-07', 51]", "['2013-05-08', 93]", "['2013-05-09', 231]", "['2013-05-10', 350]", "['2013-05-11', 258]", "['2013-05-12', 0]", "['2013-05-13', 61]"]; myData = myData.map (function (v) { // convert to useable form v = v.match (/^\['(\d{4}-\d{2}-\d{2})',\s*(\d+)\]$/); return [v[1], v[2]]; }); myDays = myData.reduce (function (days, v) { days[(new Date (v[0])).getDay ()].push (v); return days; }, [[],[],[],[],[],[],[]]); // array of 7 arrays, one per day of week. JSON.stringify (myDays);
->
"[[["2013-04-21","26"],["2013-04-28","593"],["2013-05-05","74"],["2013-05-12","0"]], [["2013-04-15","26"],["2013-04-22","31"],["2013-04-29","925"],["2013-05-06","76"],["2013-05-13","61"]], [["2013-04-16","10"],["2013-04-23","48"],["2013-04-30","877"],["2013-05-07","51"]], [["2013-04-17","51"],["2013-04-24","821"],["2013-05-01","277"],["2013-05-08","93"]], [["2013-04-18","46"],["2013-04-25","917"],["2013-05-02","112"],["2013-05-09","231"]], [["2013-04-19","32"],["2013-04-26","949"],["2013-05-03","115"],["2013-05-10","350"]], [["2013-04-20","50"],["2013-04-27","405"],["2013-05-04","62"],["2013-05-11","258"]] ]"