Iterate Through All an Array's Items Using For Loops: Alternate Solution?

Tell us what’s happening:


I’ve been working on this challenge for a bit and after looking at the hints I understand that I was trying to do it in an unnecessarily complicated way, but I don’t understand why my current code doesn’t work. It succeeds with arrays that contain only numbers, but not with the ones that contain strings. For example, when I put in filteredArray([ [“trumpets”, 2], [“flutes”, 4], [“saxophones”, 2] ], 2), it logs flutes,4,.

Again, I now know that I should complete the challenge using .indexOf to make it simpler, but I’d just like to know what’s wrong with my current code.


Your code so far

function filteredArray(arr, elem) {
  let newArr = [];
  // change code below this line
  for (let i = 0; i < arr.length; i++) {
    let subArr = [];
    let elemPresent = false;
    for (let j = 0; j < arr.length; j++) {
      if (arr[i][j] != elem) {
      } else {
        elemPresent = true; 
    if (elemPresent != true) {
  // change code above this line
  return newArr;

// change code here to test different cases:
console.log(filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2));

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36.

Link to the challenge:

In your inner loop you should iterate over the sub-arrays.

for (let j = 0; j < arr[i].length; j++) {

That’s why you’re getting “flutes,4,”, you’re just looping too much.

1 Like

That makes total sense; what a difference a tiny detail can make.

It works now, thanks for your help!