Can someone tell me what's wrong with my code?

Can someone tell me what's wrong with my code?
0

#1

Tell us what’s happening:

Your code so far


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

 }
  // change code above this line
  return console.log(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 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 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/


#2

I will give you some hints.

This line looks funky. You shouldn’t use console.log here. Just return newArr.

    for(let j = 0; j < con; j++) {
      if(newArr[i][j] == elem) {
              
        newArr.splice(i,1);
       
      }
      con=0;
    }

You are looping if j is less than con. But you are setting con = 0 inside your nested loop, so it will only run once. Consider moving this outside of your nested loop.


#3

For starters, no matter what newArr ends up being, your function will always return undefined, because console.log does not have a return value. In JavaScript, when a function does not explicitly return a value, the value undefined is returned by default.

The next problem is your use of splice. When you splice a sub array out of newArr, you do not need to keep iterating through the inner for loop. Also, because splice adjusts the index values of newArr, in the next iteration of the outer for loop (after a splice), i will still be increased add skips over an element. Lastly, why do you think assign con a value of zero is helping you here? By setting con = 0 where you did in the inner for loop, you are only checking the first element of each sub array. So, if other elements beyond the first element in a sub array are equal to num, you will not splice the sub array out.