Iterate Through All an Array's Items Using For Loops - Need help

Tell us what’s happening:
can anyone tell me what’s missing here because i really don’t see why this isn’t working

Your code so far


function filteredArray(arr, elem) {

let newArr = [];
// change code below this line
for(let i = 0; i < arr.length; i++){
  if(arr[i].indexOf(elem) < 0){
    return newArr.push(arr[i]);
  } else {
    return newArr;
  }
}
// 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]], 6));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 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-loops

Hello, Prometheus.

Have a read through the documentation of the Push Method

Specifically, pay attention as to what push returns.

Hope this helps

1 Like

Hello @Prometheus03!

Your code is fine,except the fact that you are returning newArr from for loop. That is what’s causing the issue.
If arr[i].indexOf(elem) < 0 you just need to push to newArr,not to return newArr because it will cause just iteration as long as the return statement is reached.
Also,delete this else block,it is redundant here.

i removed the returns and the redundant else part

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

this works just fine

thanks for the heads up