Я иногда нахожусь в этом положении, и я уверен, что есть лучший способ сделать это, чем я сейчас.лучший способ кодирования рекурсивных операторов if
В этом примере я пытаюсь сортировать группу раз, когда у меня конфликтующие элементы. Мне нужно знать, какие времена имеют высокий приоритет, не могут быть перемещены, а также с низким приоритетом, могут быть перемещены. Но я уверен, что этот код очень неэффективен.
var holdLowPriorities = [];
for (conflict = 0; conflict < sortedTimes.length - 1; conflict++) {
var firstConflictTimeStart = sortedTimes[conflict][0];
var firstConflictTimeEnd = sortedTimes[conflict][1];
var secondConflictTimeStart = sortedTimes[conflict + 1][0];
var secondConflictTimeEnd = sortedTimes[conflict + 1][1];
if (firstConflictTimeStart < secondConflictTimeEnd &&
firstConflictTimeEnd > secondConflictTimeStart) {
// are either of the conflicts a high priority
var firstContactPriority = sortedTimes[conflict][2];
var secondContactPriority = ortedTimes[conflict + 1][2]
if (firstConflictPriority == 2) {
//this is high priority, can't move
}
if (secondConflictPriority == 2) {
// this is also a priority, but has to move
}
// are either of the conflicts a low priority?
if (firstConflictPriority == 0) {
// this is a low priority so I can adjust the time
} else if (secondConflictPriority == 0) {
// this is a low priority so I can adjust the time
}
}
}
К сожалению, я даже не знаю, как назвать этот тип проблемы, и поэтому не знаю, что искать, хотя я уверен, что ответ не слишком сложно (я надеюсь, не в любом случае).
Вы можете сделать код более удобным для чтения (и, возможно, более эффективным), используя некоторые промежуточные переменные с точными именами. –
Какова структура 'sortedTimes'? –
Ничего себе, это сложно сохранить блок кода ... 10/10 для того, чтобы его улучшить ... Вы определенно хотите прислушаться к совету Митча Пшеница - и как только вы получите промежуточные переменные, отредактируйте свой Q с обновленным код. – Basic