JS TypeError: arr[i] is undefined

Tell us what’s happening:

Hello, this is my code and i get this error: TypeError: arr[i] is undefined. The reason is the delete operator somehow, because without it I get no error. How should i fix it, and why do i get the error?

Your code so far


function filteredArray(arr, elem) {
let newArr = [];
// Only change code below this line
for (let i = 0; i < arr.length; i++){

  for (let b = 0; b < arr[i].length; b++){

    

    if (arr[i][b] == elem){

      console.log(arr[i][b])
      
      

      delete arr[i];
    } 

  }

  



}

// Only change code above this line
return newArr;
}

console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0.

Challenge: Iterate Through All an Array’s Items Using For Loops

Link to the challenge:

Hi @Nicke!

I think there is a much easier way to solve this without having to use a nested for loop and delete operator. You could use just one for loop and a helpful array method instead.

FCC instructions:
elem represents an element that may or may not be present on one or more of the arrays nested within arr

This might help

Whichever method you choose, you are still returning an empty array.
newArr = []

In your current example, you are not adding anything to the newArr.

You do have to resolve that issue whether you use a nested for loop or indexOf.

you delete arr[i] so at next iteration of the b loop, it is trying to access arr[i][b] where arr[i] was deleted, so undefined[b]

1 Like