function filteredArray(arr, elem) { let newArr = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; i++) { if (arr[i][j] != elem) { newArr.push(arr[i]); } } } return newArr; } console.log(filteredArray([ [3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9] ], 3));¿Cómo debo eliminar ese error? Si una matriz anidada no contiene un elemento, lo empujará a newArr.
Necesitas incrementar j en ese ciclo interno.
También debe encontrar una manera de verificar si se ha encontrado elem , y solo si se ha encontrado, para agregar la matriz anidada a la salida.
function filteredArray(arr, elem) { let newArr = []; for (let i = 0; i < arr.length; i++) { let found = false; for (let j = 0; j < arr[i].length; j++) { if (arr[i][j] === elem) { found = true; } } if (!found) newArr.push(arr[i]); } return newArr; } console.log(JSON.stringify(filteredArray([ [3, 2, 3], [1, 6, 3], [1, 6, 4], [3, 13, 26], [19, 3, 9] ], 3))); Un método más moderno sería filter las matrices donde elem no está included :
function filteredArray(arr, elem) { return arr.filter(inner => { return !inner.includes(elem); }); } console.log(JSON.stringify(filteredArray([ [3, 2, 3], [1, 6, 3], [1, 6, 4], [3, 13, 26], [19, 3, 9] ], 3)));function filteredArray(arr, elem) { let newArr = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { if (arr[i][j] == elem) { newArr.push(arr[i]); } } } return newArr; } console.log(filteredArray([ [3, 2, 3], [1, 6, 2], [3, 13, 26], [19, 3, 9] ], 3));