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));