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

Tell us what’s happening:

when it runs the given example it deletes only the first array with 3 in it?does it have to do something with the splice function?does it exit the loop when splice is used?how can i make it delete all of the arrays?

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) {
   arr.splice(i,1);
  }
}

newArr=[...arr];
console.log(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]], 3));

Your browser information:

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

.splice() mutates (changes) the array, so after each splicing:

  1. arr.length is a different number,
  2. i points to a “wrong” element.

Maybe you want to use newArr in a different way, so you don’t use splice, mutating the original array and making things more difficult

1 Like