JavaScript 检查迭代器是否包含值

Yan*_*nic 6 javascript arrays iterator

对于 JavaScript 数组,includes(value)当且仅当数组包含该值时,该函数返回 true。什么是一个好的和高性能的等同于检查,一个值是否包含在迭代器中(例如map.values())?

第一种方法(可能不是性能最好的方法):

Array.from(it).includes(value)
Run Code Online (Sandbox Code Playgroud)

第二种方法(没那么短):

const iteratorIncludes = (it, value) => {
  for (x of it) {
    if (x === value) return true
  }
  return false
}
iteratorIncludes(it, value)
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

你的第二种方法看起来不错。当然,您需要将辅助函数隐藏在某个地方,但您只需要声明一次,所以这并不重要 - 调用简短而高效(甚至比您的第一种方法更短)。

或者,使用建议的迭代器助手并检查it.some(v => v === value)1。他们还没有提供includes反映ArrayAPI 的方法。

1:从技术上讲,includes使用SameValueZero比较===,其结果与a valueof不同NaN