хз что за retArr, но если retArr - это на самом деле arr, и в коде опечатка, то будет вот:
function filteredProtectionList(ids, elements) {
return ids.filter((elementId) => elements.findIndex(({id}) => elementId === id) >= 0);
}
Но зачем?
Если заменить функцию forEach на обычный цикл, то вся эта шняга будет даже лучше работать, чем через filter.
Но я бы лучше посмотрел, можно ли иначе вообще алгоритм сделать, тк findIndex - это дорого. (например можно вместо массива сделать словарь, в котором ключом будет id)