New semantics to the `of ` operator

It would be nice if we could see whether an element is present in an array using the of operator.
like: 3 of [5, 4, 3, 2, 1] // true
there's of course the Array.prototype.includes() method but the new semantics to of seems to be more intuitive.

This doesn't appear very intuitive to me. I'd expect 3 of x to be equivalent to x.slice(0, 3) or x[Symbol.iterator]().take(3).
I could understand using 3 in x like Python does it, unfortunately that already has (different) semantics in JS. After all, x.includes(3) is very unambiguous.

I'd rather see someone add .includes to than this syntax.

Though now that I think about it, a in b + for (let a in b) does provide some very strong precedent for this - a in b is basically GetEnumerableProperties(b).includes(a) (except it bails out early), and so desugaring like this might actually be a good idea:

// Source
const result = a of b

// Implementation
function _binaryOf(a, b) {
  for (const item of b) if (SameValueZero(item, a)) return true
  return false
const result = _binaryOf(a, b)

It's an open question how to handle async iterables syntactically, though.