Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组按多标准排序_Javascript_Arrays_Sorting - Fatal编程技术网

Javascript数组按多标准排序

Javascript数组按多标准排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个JavaScript数组,用于保存学生和他们的课程预约 tablo[0] = ['Molly','Class3A','2018.12.18','13:50']; tablo[1] = ['Ashley','Class4C','2018.10.14','14:50']; tablo[2] = ['John','Class3A','2018.01.01','13:50']; tablo[3] = ['Molly','Class3A','2018.11.20','13:50']; tablo[

我有一个JavaScript数组,用于保存学生和他们的课程预约

tablo[0] = ['Molly','Class3A','2018.12.18','13:50'];
tablo[1] = ['Ashley','Class4C','2018.10.14','14:50'];
tablo[2] = ['John','Class3A','2018.01.01','13:50'];
tablo[3] = ['Molly','Class3A','2018.11.20','13:50'];
tablo[4] = ['John','Class3A','2018.12.18','15:50'];
tablo[5] = ['Molly','Class3A','2018.09.11','13:50'];
tablo[6] = ['Ashley','Class4C','2018.10.14','15:50'];
tablo[7] = ['Ashley','Class4C','2018.11.12','13:50'];
tablo[8] = ['John','Class3A','2018.01.01','18:50'];
tablo[9] = ['John','Class3A','2018.01.01','10:50'];
tablo[10] = ['Molly','Class3A','2018.12.31','13:50'];
tablo[11] = ['Ashley','Class4C','2018.10.14','08:50'];
tablo[12] = ['Molly','Class3A','2018.05.07','13:50'];
tablo[13] = ['John','Class3A','2018.01.01','07:50'];
tablo[14] = ['Molly','Class3A','2018.09.11','12:50'];
tablo[15] = ['Molly','Class3A','2018.09.11','15:50'];
tablo[16] = ['Ashley','Class4C','2018.11.12','10:50'];
我想先按类名排序,然后按学生名排序,然后按日期排序,最后按小时排序。排序后的数组必须是这样的

tablo[0] = ['John','Class3A','2018.01.01','07:50'];
tablo[1] = ['John','Class3A','2018.01.01','10:50'];
tablo[2] = ['John','Class3A','2018.01.01','13:50'];
tablo[3] = ['John','Class3A','2018.01.01','18:50'];
tablo[4] = ['John','Class3A','2018.12.18','15:50'];
tablo[5] = ['Molly','Class3A','2018.05.07','13:50'];
tablo[6] = ['Molly','Class3A','2018.09.11','12:50'];
tablo[7] = ['Molly','Class3A','2018.09.11','13:50'];
tablo[8] = ['Molly','Class3A','2018.09.11','15:50'];
tablo[9] = ['Molly','Class3A','2018.11.20','13:50'];
tablo[10] = ['Molly','Class3A','2018.12.18','13:50'];
tablo[11] = ['Molly','Class3A','2018.12.31','13:50'];
tablo[12] = ['Ashley','Class4C','2018.10.14','08:50'];
tablo[13] = ['Ashley','Class4C','2018.10.14','14:50'];
tablo[14] = ['Ashley','Class4C','2018.10.14','15:50'];
tablo[15] = ['Ashley','Class4C','2018.11.12','10:50'];
tablo[16] = ['Ashley','Class4C','2018.11.12','13:50'];
有许多方法可以按2个标准进行排序,但我无法克服按上述示例中的4个标准进行排序的困难。

您可以使用
string#localeCompare
对数据进行排序

let tablo=[“Molly”、“Class3A”、“2018.12.18”、“13:50”]、[“Ashley”、“Class4C”、“2018.10.14”、“14:50”]、[“John”、“Class3A”、“2018.01.01”、“13:50”]、[“Molly”、“Class3A”、“2018.11.20”、“13:50”]、[“John”、“Class3A”、“2018.12.18”、“15:50”]、[“Molly”、“Class3A”、“Class3A”、“2018.09.11”、“13:50”]、[“Ashley”、“Class4C”、“2018.10.14”、“15:50”],[“阿什利”、“4C级”、“2018.11.12”、“13:50”]、[“约翰”、“3A级”、“2018.01.01”、“18:50”]、[“约翰”、“3A级”、“2018.01.01”、“10:50”]、[“莫莉”、“3A级”、“2018.12.31”、“13:50”]、[“阿什利”、“4C级”、“2018.10.14”、“08:50”]、[“莫莉”、“3A级”、“2018.05.07”、“13:50”]、[“约翰”、“3A级”、“2018.01.01.01”、“07:50”]、[“莫莉”、“3A级”,“2018.09.11”,“12:50”,“Molly”,“Class3A”,“2018.09.11”,“15:50”,“Ashley”,“Class4C”,“2018.11.12”,“10:50”]
tablo.sort((a,b)=>a[1]。localeCompare(b[1],未定义,{numeric:true})| | a[0]。localeCompare(b[0])| | a[2]。localeCompare(b[2])| | a[3]。localeCompare(b[3]);
console.log(tablo)
您可以使用
string#localeCompare
对数据进行排序

let tablo=[“Molly”、“Class3A”、“2018.12.18”、“13:50”]、[“Ashley”、“Class4C”、“2018.10.14”、“14:50”]、[“John”、“Class3A”、“2018.01.01”、“13:50”]、[“Molly”、“Class3A”、“2018.11.20”、“13:50”]、[“John”、“Class3A”、“2018.12.18”、“15:50”]、[“Molly”、“Class3A”、“Class3A”、“2018.09.11”、“13:50”]、[“Ashley”、“Class4C”、“2018.10.14”、“15:50”],[“阿什利”、“4C级”、“2018.11.12”、“13:50”]、[“约翰”、“3A级”、“2018.01.01”、“18:50”]、[“约翰”、“3A级”、“2018.01.01”、“10:50”]、[“莫莉”、“3A级”、“2018.12.31”、“13:50”]、[“阿什利”、“4C级”、“2018.10.14”、“08:50”]、[“莫莉”、“3A级”、“2018.05.07”、“13:50”]、[“约翰”、“3A级”、“2018.01.01.01”、“07:50”]、[“莫莉”、“3A级”,“2018.09.11”,“12:50”,“Molly”,“Class3A”,“2018.09.11”,“15:50”,“Ashley”,“Class4C”,“2018.11.12”,“10:50”]
tablo.sort((a,b)=>a[1]。localeCompare(b[1],未定义,{numeric:true})| | a[0]。localeCompare(b[0])| | a[2]。localeCompare(b[2])| | a[3]。localeCompare(b[3]);
console.log(tablo);
试试这个

tablo.sort( (a,b)=> a[1].localeCompare(b[1]) || a[0].localeCompare(b[0]) ||
                    a[2].localeCompare(b[2]) || a[3].localeCompare(b[3])    );
tablo=[];
表[0]=[Molly','Class3A','2018.12.18','13:50'];
表[1]=[Ashley','Class4C','2018.10.14','14:50'];
表[2]=[John','Class3A','2018.01.01','13:50'];
表[3]=[Molly','Class3A','2018.11.20','13:50'];
表[4]=[John'、'Class3A'、'2018.12.18'、'15:50'];
表[5]=[Molly','Class3A','2018.09.11','13:50'];
表[6]=['Ashley','Class4C','2018.10.14','15:50'];
表[7]=['Ashley','Class4C','2018.11.12','13:50'];
表[8]=[John','Class3A','2018.01.01','18:50'];
表[9]=[John'、'Class3A'、'2018.01.01'、'10:50'];
表[10]=[Molly','Class3A','2018.12.31','13:50'];
表[11]=[Ashley','Class4C','2018.10.14','08:50'];
表[12]=[Molly','Class3A','2018.05.07','13:50'];
表[13]=[John','Class3A','2018.01.01','07:50'];
表[14]=[Molly','Class3A','2018.09.11','12:50'];
表[15]=[Molly','Class3A','2018.09.11','15:50'];
表[16]=[Ashley','Class4C','2018.11.12','10:50'];
tablo.sort((a,b)=>a[1]。localeCompare(b[1])| | a[0]。localeCompare(b[0])||
a[2].localeCompare(b[2])| | a[3].localeCompare(b[3]);
console.log(tablo.map(x=>x.join(“”));
试试这个

tablo.sort( (a,b)=> a[1].localeCompare(b[1]) || a[0].localeCompare(b[0]) ||
                    a[2].localeCompare(b[2]) || a[3].localeCompare(b[3])    );
tablo=[];
表[0]=[Molly','Class3A','2018.12.18','13:50'];
表[1]=[Ashley','Class4C','2018.10.14','14:50'];
表[2]=[John','Class3A','2018.01.01','13:50'];
表[3]=[Molly','Class3A','2018.11.20','13:50'];
表[4]=[John'、'Class3A'、'2018.12.18'、'15:50'];
表[5]=[Molly','Class3A','2018.09.11','13:50'];
表[6]=['Ashley','Class4C','2018.10.14','15:50'];
表[7]=['Ashley','Class4C','2018.11.12','13:50'];
表[8]=[John','Class3A','2018.01.01','18:50'];
表[9]=[John'、'Class3A'、'2018.01.01'、'10:50'];
表[10]=[Molly','Class3A','2018.12.31','13:50'];
表[11]=[Ashley','Class4C','2018.10.14','08:50'];
表[12]=[Molly','Class3A','2018.05.07','13:50'];
表[13]=[John','Class3A','2018.01.01','07:50'];
表[14]=[Molly','Class3A','2018.09.11','12:50'];
表[15]=[Molly','Class3A','2018.09.11','15:50'];
表[16]=[Ashley','Class4C','2018.11.12','10:50'];
tablo.sort((a,b)=>a[1]。localeCompare(b[1])| | a[0]。localeCompare(b[0])||
a[2].localeCompare(b[2])| | a[3].localeCompare(b[3]);
console.log(tablo.map(x=>x.join(“”));
您可以试试这个

tablo.sort(function (a, b) {
   var res = a[1].localeCompare(b[1]); // Compare by classname
   if(res == 0) {   //Classnames are same, so comapre by student name
       res = a[0].localeCompare(b[0]); //Compare by student name
       if(res == 0){ //Student names are same, so comapre by date
           res = a[2].localeCompare(b[2]); //Compare by date TODO: Use some date parsing library like "momentjs" if required
           if(res == 0){ //Date is same, so comapre by hour
               res = a[3].localeCompare(b[3])
           }
       }
   }
   return res

});
你可以试试这个

tablo.sort(function (a, b) {
   var res = a[1].localeCompare(b[1]); // Compare by classname
   if(res == 0) {   //Classnames are same, so comapre by student name
       res = a[0].localeCompare(b[0]); //Compare by student name
       if(res == 0){ //Student names are same, so comapre by date
           res = a[2].localeCompare(b[2]); //Compare by date TODO: Use some date parsing library like "momentjs" if required
           if(res == 0){ //Date is same, so comapre by hour
               res = a[3].localeCompare(b[3])
           }
       }
   }
   return res

});

您尝试了什么?请分享努力。可能发布的问题的副本似乎根本不包含解决问题的内容。StackOverflow希望您这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您尝试了什么,以便说明您遇到的特定障碍a.有关详细信息,请参阅并获取。可能会有所帮助。由于您有数组数组,因此可以比较如下字符串:
const compareClassName=(direction)=>(a,b)=>a[1]。localeCompare(b[1])*方向;
您尝试了什么?请分享您的努力。可能发布的问题的副本似乎根本不包含解决问题的内容。StackOverflow希望您这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您尝试了什么,以便说明特定的障碍您遇到了一个。有关详细信息,请参阅并获取。可能会有所帮助。由于您有数组数组,因此可以比较如下字符串:
const compareClassName=(direction)=>