If you want to reduce the memory, store the numbers in typed array of 16-bit unsigned integers, which would allow you to store numbers from 0 to 65535, included.
However, searching would be slow. And 20000 numbers won't waste excessive memory.
20000 * 64 bit = 1280000 bit = 160000 byte = 156.25 kibibyte
So I would suggest a Set or an object. Set operations are required to be sublinear on average.
var s = new Set();
s.add(id); // store id
s.has(id); // check id
s.delete(id); // remove id
s.size; // count ids
for(var id of s) {} // iterate ids, in insertion order
var s = Object.create(null);
s[id] = true; // store id
id in s; // check id
delete s[id]; // remove id
for(var id in s) {} // iterate stringified ids, in implementation-defined order