Вариант с рекурсией
let set = new Set([1, 2, 3, 4, 5, 3, 4, 7, 9, 5, 7, 8, 9, 23, 45, 5, 2, 4, 5, 3, 24, 5, 2, 4, 56, 4, 3, 2, 335, 2, 23, 41, 3, 4, 1, 1, 4, 2, 2, 4, 5, 24, 5, 3, 22, 56]);
let filter = (collection) => (compare) => {
let arr = [ ...collection ];
let [first, ...rest] = arr;
if (first === undefined) {
return [];
}
rest = filter(rest)(compare);
return compare(first) ? [ first, ...rest ] : [ ...rest ];
};
let filterSet = filter(set);
console.log(filterSet((num) => num > 5));
console.log(filterSet((num) => num <= 3));
console.log(filterSet((num) => num === 0));
лучше бы IDE под мобильный написала для js-са)