# 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.

``````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));

``````

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

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!