首页 > 解决方案 > JavaScript 检查迭代器是否包含值

问题描述

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

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

Array.from(it).includes(value)

第二种方法(不是那么短):

const iteratorIncludes = (it, value) => {
  for (x of it) {
    if (x === value) return true
  }
  return false
}
iteratorIncludes(it, value)

标签: javascriptarraysiterator

解决方案


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

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

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


推荐阅读