Mishen Thakshana
Mishen Thakshana

Reputation: 1544

Return only the values if not inside the array in for loop

This array contains 1,5,

let numberArray = [1,5];

I'm trying to print numbers from 1 to 280 except for the values inside the numberArray,

 for (let i = 1; i < 281; i++) {
    numberArray.forEach((number) => {
      if (number != i) {
        console.log(i);
      }
    });
  }

I'm expecting the result to be 2,3,4,6,7...280 without printing 1 and 5 in this case. But I get like this,

enter image description here

It prints 2 times each number except 1 and 5. I want to completely omit the values inside the numberArray and print the other values. Really appreciate it if somebody could point me to the bug. Thanks.

Upvotes: 0

Views: 35

Answers (1)

Richard Hpa
Richard Hpa

Reputation: 2867

It isn't a bug, your code is doing exactly what you are telling it too. You have your for loop which happens 280 times and then you have a forEach loop inside that which is happening twice every time the loop goes around. So the Foreach loop is actually happening. 558 times.

You can just use the .includes method to check i doesn't exist within the numberArray.

 for (let i = 1; i < 281; i++) {
    if(!numberArray.includes(i)){
       console.log(i);
    }
  }

Upvotes: 3

Related Questions