Basic Data Structures - Iterate Through All an Array's Items Using For Loops

Tell us what’s happening:
Describe your issue in detail here.

Hi,

I was wondering if someone could help me understand the solution code. If the element is not found in the array, why would we push the array into a new array?

My understanding of the problem was that if the element was found, we would remove it. I just don’t understand how the solution code accomplishes this. I’ve researched it as best I can and I just don’t get it. Any insight would be appreciated.
Your code so far

function filteredArray(arr, elem) {
  let newArr = [];
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    if (arr[i].indexOf(elem) == -1) {
      newArr.push(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) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37

Challenge: Basic Data Structures - Iterate Through All an Array’s Items Using For Loops

Link to the challenge:

Because that is what the instructions tell you to do (see below):

such that any array nested within arr containing elem has been removed

If elem is found in a nested array of arr, then you are not supposed to add the nested array to the final array returned. If elem is not found in a nested array of arr, then you want to add the nested array to the final array returned.

If a nested array contains elem, it is not supposed to be in the final array, so you would not push the nested array into the final array. If a nested array does not contain elem, the nested array is supposed to be pushed into the final array (which is exactly what the lines below do).

  if (arr[i].indexOf(elem) == -1) {
    newArr.push(arr[i]); 
  }

Thank you RandellDawson. This was my first time asking a question, so I’m not sure I worded it correctly, but your answer still helped. I think where I was confused was… in the arr being passed to the function, the newArr came back an empty array. In this particular example, I wasn’t able to understand as clearly what was happening. I was too focused on the original arr being passed.

As I understand it now, the variable newArr was initiated as an empty array and no nested array was pushed to it because, as the nested arrays were iterated over, all contained the elem that was passed as an argument into the function. So, there was nothing to pass. That was the missing piece. I wasn’t seeing the connection between the arr and newArr that was happening. But I see it much better now.

Thanks a lot!