Remover Elemento (Algoritmo JS)

Esta função removerá todas as instâncias de um inteiro de uma matriz de inteiros. A primeira versão usa uma segunda matriz para fazer isso. O segundo usa um loop for aninhado. Alguém tem uma boa solução que pré-forma a operação no local (ou seja, sem usar uma segunda matriz) e sem o temido loop aninhado para?

Versão 1: resolvido usando a segunda matriz

var int = 3;
var arr = [3,3,3,3,3];

function removeElement1(int, arr) {

if(typeof int != 'number' && typeof arr != 'object') {
return false;
}

var output = [];

for(var i = 0, len = arr.length; i < len; i++) {

if(arr[i] != int) {
output
.push(arr[i]);
}

}

arr
= output;

return arr;

}

console
.log(removeElement(int, arr));

Versão 2: resolvido usando for-loop aninhado

var int = 3;
var arr = [3,3,3,3,3];

function removeElement2(int, arr) {

if(typeof int != 'number' && typeof arr != 'object') {
return false;
}

for(var i = 0, len = arr.length; i < len; i ++) {

for(var j = 0; j < len; j++) {

if(arr[j] === int) {
arr
.splice(j, 1);
}

}

}

return arr;

}

console
.log(removeElement2(int, arr));