子组内的JS数组排序

我有这个JS数组….

[{ "Event_code": "BW-114", "Interest_area": "Nursing and midwifery", "Start_time": "9:00 AM", "End_time": "3:00 PM", "Session_type": "Tour", "all_day_evt": true }, { "Event_code": "BW-087", "Interest_area": "Information technology", "Start_time": "9:00 AM", "End_time": "3:00 PM", "Session_type": "Experience", "all_day_evt": true }, { "Event_code": "BW-060", "Interest_area": "Sport", "Start_time": "9:30 AM", "End_time": "3:00 PM", "Session_type": "Tour", "all_day_evt": true }, { "Event_code": "BW-115", "Interest_area": "Food, Nutrition and dietetics", "Start_time": "9:30 AM", "End_time": "3:00 PM", "Session_type": "Tour", "all_day_evt": true }, { "Event_code": "BW-161", "Interest_area": "Media, Communication and creative arts", "Start_time": "9:00 AM", "End_time": "3:00 PM", "Session_type": "Experience", "all_day_evt": true }, { "Event_code": "BW-032", "Interest_area": "", "Start_time": "9:30 AM", "End_time": "10:00 AM", "Session_type": "General information session", "all_day_evt": false }, { "Event_code": "BW-129", "Interest_area": "Media, Communication and creative arts", "Start_time": "2:00 PM", "End_time": "2:30 PM", "Session_type": "Tour", "all_day_evt": false }, { "Event_code": "BW-081", "Interest_area": "Information technology", "Start_time": "9:00 AM", "End_time": "9:30 AM", "Session_type": "Course information session", "all_day_evt": false }, { "Event_code": "BW-048", "Interest_area": "Media, Communication and creative arts", "Start_time": "12:00 PM", "End_time": "12:30 PM", "Session_type": "Experience", "all_day_evt": false }, { "Event_code": "BW-128", "Interest_area": "Media, Communication and creative arts", "Start_time": "12:00 PM", "End_time": "12:30 PM", "Session_type": "Tour", "all_day_evt": false, "clash": "This clashes with another session" }, { "Event_code": "BW-039", "Interest_area": "Media, Communication and creative arts", "Start_time": "1:00 PM", "End_time": "1:30 PM", "Session_type": "Experience", "all_day_evt": false }, { "Event_code": "BW-162", "Interest_area": "Education and teaching", "Start_time": "1:00 PM", "End_time": "1:30 PM", "Session_type": "Tour", "all_day_evt": false, "clash": "This clashes with another session" }, { "Event_code": "BW-034", "Interest_area": "", "Start_time": "1:30 PM", "End_time": "2:00 PM", "Session_type": "General information session", "all_day_evt": false }, { "Event_code": "BW-170", "Interest_area": "", "Start_time": "9:30 AM", "End_time": "10:30 AM", "Session_type": "General information session", "all_day_evt": false, "clash": "This clashes with another session" }] 

这是我的代码……

 // Func 1 -- Sort by 'all_day_evt' key ie True/False arr.sort(function (x, y) { return y.all_day_evt - x.all_day_evt; }); console.log(arr); // Func 2 -- Sort by time arr.sort(function (a, b) { return ((new Date('1970/01/01 ' + a.Start_time)) - (new Date('1970/01/01 ' + b.Start_time))); }); console.log(arr); 

我期待在这个arrays上进行2次操作……

  1. 通过“all_day_evt”键对此数组进行分组。 我可以轻松地使用Func 1来做到这一点。
  2. 在“true”子组中对此数组进行排序,在“Start_time”中对“false”子组进行排序。 我可以使用Func 2轻松完成此操作,但仅适用于所有整个组/arrays。

我如何在子组中执行此操作,即’true’组和’false’组? 我在组合这两个function时遇到了一些困难。

任何建议都非常感谢。 谢谢。

您需要将两个字段一起排序。 试试以下

 let arr = [{"Event_code":"BW-114","Interest_area":"Nursing and midwifery","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-087","Interest_area":"Information technology","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Experience","all_day_evt":true},{"Event_code":"BW-060","Interest_area":"Sport","Start_time":"9:30 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-115","Interest_area":"Food, Nutrition and dietetics","Start_time":"9:30 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-161","Interest_area":"Media, Communication and creative arts","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Experience","all_day_evt":true},{"Event_code":"BW-032","Interest_area":"","Start_time":"9:30 AM","End_time":"10:00 AM","Session_type":"General information session","all_day_evt":false},{"Event_code":"BW-129","Interest_area":"Media, Communication and creative arts","Start_time":"2:00 PM","End_time":"2:30 PM","Session_type":"Tour","all_day_evt":false},{"Event_code":"BW-081","Interest_area":"Information technology","Start_time":"9:00 AM","End_time":"9:30 AM","Session_type":"Course information session","all_day_evt":false},{"Event_code":"BW-048","Interest_area":"Media, Communication and creative arts","Start_time":"12:00 PM","End_time":"12:30 PM","Session_type":"Experience","all_day_evt":false},{"Event_code":"BW-128","Interest_area":"Media, Communication and creative arts","Start_time":"12:00 PM","End_time":"12:30 PM","Session_type":"Tour","all_day_evt":false,"clash":"This clashes with another session"},{"Event_code":"BW-039","Interest_area":"Media, Communication and creative arts","Start_time":"1:00 PM","End_time":"1:30 PM","Session_type":"Experience","all_day_evt":false},{"Event_code":"BW-162","Interest_area":"Education and teaching","Start_time":"1:00 PM","End_time":"1:30 PM","Session_type":"Tour","all_day_evt":false,"clash":"This clashes with another session"},{"Event_code":"BW-034","Interest_area":"","Start_time":"1:30 PM","End_time":"2:00 PM","Session_type":"General information session","all_day_evt":false},{"Event_code":"BW-170","Interest_area":"","Start_time":"9:30 AM","End_time":"10:30 AM","Session_type":"General information session","all_day_evt":false,"clash":"This clashes with another session"}]; arr.sort((x,y) => y.all_day_evt- x.all_day_evt || ((new Date('1970/01/01 ' + x.Start_time)) - (new Date('1970/01/01 ' + y.Start_time)))); console.log(arr); 

您可以根据条件对arrays进行排序,仅在单个比较器中。

请尝试以下方法:

 var arr = [{"Event_code":"BW-114","Interest_area":"Nursing and midwifery","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-087","Interest_area":"Information technology","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Experience","all_day_evt":true},{"Event_code":"BW-060","Interest_area":"Sport","Start_time":"9:30 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-115","Interest_area":"Food, Nutrition and dietetics","Start_time":"9:30 AM","End_time":"3:00 PM","Session_type":"Tour","all_day_evt":true},{"Event_code":"BW-161","Interest_area":"Media, Communication and creative arts","Start_time":"9:00 AM","End_time":"3:00 PM","Session_type":"Experience","all_day_evt":true},{"Event_code":"BW-032","Interest_area":"","Start_time":"9:30 AM","End_time":"10:00 AM","Session_type":"General information session","all_day_evt":false},{"Event_code":"BW-129","Interest_area":"Media, Communication and creative arts","Start_time":"2:00 PM","End_time":"2:30 PM","Session_type":"Tour","all_day_evt":false},{"Event_code":"BW-081","Interest_area":"Information technology","Start_time":"9:00 AM","End_time":"9:30 AM","Session_type":"Course information session","all_day_evt":false},{"Event_code":"BW-048","Interest_area":"Media, Communication and creative arts","Start_time":"12:00 PM","End_time":"12:30 PM","Session_type":"Experience","all_day_evt":false},{"Event_code":"BW-128","Interest_area":"Media, Communication and creative arts","Start_time":"12:00 PM","End_time":"12:30 PM","Session_type":"Tour","all_day_evt":false,"clash":"This clashes with another session"},{"Event_code":"BW-039","Interest_area":"Media, Communication and creative arts","Start_time":"1:00 PM","End_time":"1:30 PM","Session_type":"Experience","all_day_evt":false},{"Event_code":"BW-162","Interest_area":"Education and teaching","Start_time":"1:00 PM","End_time":"1:30 PM","Session_type":"Tour","all_day_evt":false,"clash":"This clashes with another session"},{"Event_code":"BW-034","Interest_area":"","Start_time":"1:30 PM","End_time":"2:00 PM","Session_type":"General information session","all_day_evt":false},{"Event_code":"BW-170","Interest_area":"","Start_time":"9:30 AM","End_time":"10:30 AM","Session_type":"General information session","all_day_evt":false,"clash":"This clashes with another session"}]; arr.sort(function (x, y) { return (y.all_day_evt - x.all_day_evt) || ((new Date('1970/01/01 ' + x.Start_time)) - (new Date('1970/01/01 ' + y.Start_time))); }); console.log(arr);