我有这段代码来对一组对象进行排序。对象中的数据是频道和时间(小时、分钟)。我希望根据从最早到最晚的时间按频道进行排序。
通过这种方式访问通道数据:
channel_array[icount].data[0].hour
channel_array[icount].data[0].minutes
该data
对象数组是这样的,并且已经排序:
[{hour:1, minutes:10},{hour:4, minutes:01}...]
现在我只需要在数据数组的第一个元素上对通道从最早到最新进行排序{hour:1, minutes: 10}
。我用三个嵌套循环来做到这一点。但这并不理想。有没有更好的方法来进行排序?
var current_time = new Date();
var current_hour = current_time.getHours();
var comp_hour = current_hour - 1;
for (var ih = 0; ih < 24; ih++) {
comp_hour += 1;
if (comp_hour == 24) { comp_hour = 0; }
for (var minutes = 0; minutes < 60; minutes++) {
for (var icount = 0; icount < channel_array.length; icount++) {
if (channel_array[icount].data.length > 0) {
var channel_hour = channel_array[icount].data[0].hour;
var channel_minutes = channel_array[icount].data[0].minutes;
var channel_phase = channel_array[icount].data[0].phase;
var next_day = channel_array[icount].data[0].next_day;
if (channel_phase.toLowerCase() == "pm" && channel_hour != 12) { channel_hour += 12; }
if ( parseInt(channel_hour) == parseInt(comp_hour) && parseInt(channel_minutes) == parseInt(minutes) && next_day != 1 ) {
channel_array_sort.push(channel_array[icount]);
}
}
}
}
}