Iterate Through All an Array's Items Using For Loops......3

i know this is the correct answer , i copied it from hints , but i did about 85% of it by myself , but what i cant understand are the last two lines of code in the if statment : i–; and break;
why decrement the i , and what happens if we don’t break.

Your code so far


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

  // 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/69.0.3497.92 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