Iterate Through All an Array's Items Using For Loops help please

Tell us what’s happening:
This is what freeCodeCamp console shows
// running test
Cannot read property ‘length’ of undefined
Cannot read property ‘length’ of undefined
Cannot read property ‘length’ of undefined
Cannot read property ‘length’ of undefined
Cannot read property ‘length’ of undefined
// tests completed

Your code so far


function filteredArray(arr, elem) {
  let newArr = [];
  // change code below this line
  for( let i=0; i < arr.length ; i++1){
    for(let j=0; j < arr[i].length ; j++){
      let pos= arr[i].indexOf(elem);
      if(pos>=0){
        arr.splice(pos, 1);
      }
    }
  }
  newArr = [...arr];
  // change code above this line
  return newArr;
}

// change code here to test different cases:
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) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-all-an-arrays-items-using-for-loops

When you call arr.splice(), it changes the array’s length. Think about what happens when your code comes across the number it’s looking for - the array gets deleted, but your loop keeps trying to go through it as though it’s still there. Since you already have newArr, it would be better to push the items you want to keep into that array rather than try to remove the items you want to drop from the original.

1 Like