Downsampling PCM Audio

I'm looking everywhere for solutions for audio downsampling. However for one reason or another they are incomplete, sometimes buggy, and sometimes are in a programming language I cannot understand.

So here's my use case:

I have an array containing two channels (left-right, it is a microphone) with Float32 data that gets interleaved and then converted to PCM like this:

function interleave(left, right) {
var length = left.length + right.length;
var result = new Float32Array(length);
var _index = 0;
for(var index = 0; index < length;) {
result[index++] = left[_index];
result[index++] = right[_index];
_index++;
}
return result;
}

function convertToPCM(raw) {
var output = new Buffer(raw.length*2);
for (var i = 0, offset = 0; i < raw.length; i++, offset += 2){
var s = Math.max(-1, Math.min(1, raw[i]));
output.writeInt16LE(s < 0 ? s*0x8000 : s*0x7FFF, offset);
}
return output;
}


This is NodeJS\Javascript, but I think it's pretty clear how it works.

Now here's the issue. The output of these function needs to generate a WAV file downsampled to 22000 or 16000, but the source has a sample rate of 44100.

Could you please highlight what algorithm should I use in order to achieve this?

Thank you very much!