Iterate Through All an Array's Items Using For Loops-- if statement not evaluating properly?

Tell us what’s happening:
My

if(!(arr[i].indexOf(elem)) >= 0)

evaluates true/false properly, but my for loop seems to be pushing arr[i] to the new array regardless of how the if statement evaluates. What am I missing here?

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){
          newArr.push(arr[i]);
          console.log(arr[i] + "was pushed");
        } else {
          console.log(elem + "is in" + arr);
      }
      }
  // 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/74.0.3729.157 Safari/537.36.

I guess I could have wrote it as:

for(let i=0; i<arr.length; i++){
        if((arr[i].indexOf(elem)) >= 0){
              console.log(elem + "is in" + arr);          
        } else {
              newArr.push(arr[i]);
              console.log(arr[i] + "was pushed");

But it felt kinda weird putting the action inside of else. Is there a better way to rewrite this?

Ah, that makes sense. I changed it to

    for(let i=0; i<arr.length; i++){
        if((arr[i].indexOf(elem)) < 0){
          newArr.push(arr[i]);
          console.log(arr[i] + " was pushed");
        } else {
          console.log(elem + " is in " + arr);

and it works now. That does certainly make it a lot easier to digest. Thanks!