I'm encountering some unexpected behavior in my JavaScript code which I'd like to understand. I want a one-line function to detect if a number exists inside an array of integers. The number being checked is the iterator of a loop in another array. I'm using the standard includes()
function, should note the same happens with an indexOf() >= 0
check. For this test we have the following code:
const array1 = [0, 1, 2, 3];
const array2 = [1, 2];
for(let i in array1)
console.log(array2.includes(i));
To my surprise each output returns false
instead of the expected false true true false
sequence. How can this be? I know I'm checking i
not arr[i]
, but i
still corresponds to the numbers included in those arrays: 0 is still 0, 1 is still 1, etc. Using arr.includes(1)
does return true, so why not arr.includes(i)
when i
is also 1?