== Why is this an issue? The ``++in++`` operator is used to check if a property is in an object or its https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain[prototype chain]. When used on an array, it will compare against the indexes of the array, not the values. This is likely not to be the expected behavior. [source,javascript,diff-id=1,diff-type=noncompliant] ---- function func1() { const arr = ["a", "b", "c"]; const expectedValue = "b"; if (expectedValue in arr) { // Noncompliant: will be always false return expectedValue + " found in the array"; } else { return expectedValue + " not found"; } } ---- Use the method `Array.prototype.includes()` to determine whether an array contains a certain value. If the actual intention is to check for an array slot, use ``++Object.prototype.hasOwnProperty()++``. [source,javascript,diff-id=1,diff-type=compliant] ---- function func() { const arr = ["a", "b", "c"]; const expectedValue = "b"; if (arr.includes(expectedValue)) { return expectedValue + " was found in the array"; } else { return expectedValue + " not found"; } } ---- == Resources === Documentation * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in[MDN - `in` operator] * link:++https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in++[MDN - ``++for...in++``] * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes[MDN - `Array.prototype.includes()`] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Use "indexOf" or "includes" (available from ES2016) instead. === Highlighting "in" expression ''' == Comments And Links (visible only on this page) === on 7 May 2018, 13:56:14 Stas Vilchik wrote: \[~alexandre.gigleux] JavaScript is not a compiled language, so please remove the word "compile" from the description. endif::env-github,rspecator-view[]