JS Built-ins
← Array104 / 226
ArrayArray.prototype.includesintermediate

Array.prototype.includes() β€” finding NaN

πŸ“– Usage Example
const arr = [1, NaN, 3]
arr.includes(NaN)  // β†’ true  (uses SameValueZero)
arr.indexOf(NaN)  // β†’ -1   (does not find NaN)

Use includes() to check for NaN β€” unlike indexOf(), it handles NaN correctly.

Array.prototype.includes() β€” SameValueZero

Unlike indexOf, which uses strict equality (===), includes() uses SameValueZero, which correctly identifies NaN as equal to itself. So [NaN].includes(NaN) returns true.

Challenge: Implement hasNaN(arr) that returns arr.includes(NaN).

hasNaN([1, NaN, 3]) // β†’ true
hasNaN([1, 2, 3])   // β†’ false
πŸ’‘ Hints (2)
  • β€’ `NaN === NaN` is `false` in JavaScript, so `indexOf` cannot find it.
  • β€’ `includes()` uses SameValueZero, which treats `NaN` as equal to `NaN`.