Iteration through Array

Tell us what’s happening:
What am I missing ? It seems to me that I verified all cases and with splice() method it is supposed to be correct for all cases
image
Your code so far


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

  }
      
newArr = [...arr];

// 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) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45.

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

Link to the challenge:

Remember that splice change the content of the array, and you are looping through it.

You may expect your loop to run 4 times looking at each element of the array, but it’s not gonna happen since the array is changing as well.

Hope it helps :slight_smile:

1 Like

yea well I am a newbie and seems to be you know more than me still, i took time to understand(best in my ability :sweat_smile:) that splice is mutating the array. Marmiz has explained way better than me :grinning:

1 Like

Thank you for your help :grin:,
but do you suggest any other solution using splice() and somehow not forgetting about the rest of elements ?

It is best if you do not modify an array as you iterate over it. In this case, I’d modify the newArr as you iterate over arr.

1 Like

I am a newbie too … Best of luck for both of us :grin:

1 Like

yea thanks dude… we got this :smiley: