У меня есть несколько вложенных операторов if / else, но я хочу уменьшить их накладные расходы.
В этом примере я оцениваю, из какого выпадающего меню был нажат элемент li, и является ли этот элемент li первым (currentIndex === 0).
Код:
if (parentIndex === 1) {
// But its own index is 0
if (currentIndex === 0) {
parentIndex = 2;
updatedIndexPos = array[1];
mainIndex =list_2.indexOf(updatedIndexPos);
// If the previous line is -1:
if (mainIndex === -1) {
parentIndex = 1;
updatedIndexPos = filterIndexPos;
mainIndex = list_1.indexOf(updatedIndexPos);
}
} else {
mainIndex = list_1.indexOf(mainIndexPos);
}
} else if (parentIndex === 2) {
// But its own index is 0
if (currentIndex === 0) {
parentIndex = 1;
updatedIndexPos = array[0];
mainIndex = list_1.indexOf(updatedIndexPos);
// If the previous line is -1:
if (mainIndex === -1) {
parentIndex = 2;
updatedIndexPos = filterIndexPos;
mainIndex = list_2.indexOf(updatedIndexPos);
}
} else {
mainIndex = list_2.indexOf(mainIndexPos);
}
}
Глядя на это, много кода используется повторно, и eslint дает мне сложность 7 для него. Я пытался разбить его на более мелкие функции и передавать аргументы, но все еще не смог решить сложность этого блока кода.