Norum, на "освоение" уже потрачено больше года, результат вот прям совсем не впечатляющий. Такими темпами "дорасту" не случится - в гроб раньше ляжете.
AnatolyKS, надо экранировать спецсимволы при создании регулярного выражения, вместо higlight передавайте в конструктор higlight.replace(/[\\^$|.*?+{}()[\]]/g, '\\$&').
Всё учитывается - нет разницы, с каким массивом работать, пустым или нет. Может, вы не до конца понимаете значение словосочетания "пустой массив"? Случайно не путаете с "массив отсутствует"? Если так - проверяйте, чем является savedProjects, если не массив, тогда вместо выполнения фильтрации сразу возвращайте пустой массив: