Сначала то, что мне непонятно.
<li><div id="Вариант"><div class="inline a111 item"><a>Вариант</a></li>
Что это за конструкция? Где </div>? Зачем там <a>...</a> без href?
В #myDropdown список <a> фиксирован?
Тогда можно сначала получить массив строк и поиск осуществлять в нем
a = div.querySelectorAll('a')
const sarr = [...a].map( a => a.textContent.toUpperCase())
А в самой фунции
for(var i = 0; i < a.length; i++) {
if (filter.length) {
if (sarr[i].includes(filter)) {
arr.push([i]);
a[i].hidden = false;
} else {
a[i].hidden = true;
}
} else {
a[i].hidden = false;
}
}
Тогда и третий цикл (когда фильтр пустой) не нужен будет
Вам точно нужно любое вхождение фильтра, а не с начала строки?
Если только с начала, то лучше использовать startsWith , вместо includes