For loop java script

Tell us what’s happening:

why is my code not working

Your code so far


function filteredArray(arr, elem) {
let newArr = [];

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

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

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/83.0.4103.116 Safari/537.36.

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

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

You’re supposed to return the new filtered array but your code returns the original, unmodified array instead.

This line does not modify the arr array at all; it returns a new array that is never used elsewhere.

So here’s what you should do. To make things simple, you don’t need nested for loops. Use only one for loop, and use the .includes() array method to check if an element exists within an array. Modify the newArr variable as needed and then return it.

I hope it helps.

sorry @asemarian but your explanation is not correct

splice mutate the original array, and that’s the issue: if you mutate the array you are iterating over you have unexpected results, like some elements not getting tested, loop stopping prematurely etc
also splice returns the removed elements from the array

@tejambsnks instead of using splice , try to use a different method to add the elements you want to keep to newArr

Yes, you’re right @ilenia. My bad. I always confuse .splice() with .slice(). Thanks for clearing that up.