【问题标题】:JavaScript check whether iterator includes valueJavaScript 检查迭代器是否包含值
【发布时间】:2021-01-13 12:27:25
【问题描述】:

对于 JavaScript 数组,当且仅当数组包含该值时,includes(value) 函数才会返回 true。 检查一个值是否包含在iterator 中(例如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)

【问题讨论】:

  • @pilchard,这只会检查地图的键。
  • 第二个看起来不错。当然,您需要将辅助函数存放在某个地方,但调用简短而高效。或者,使用proposed iterator helpers 并检查it.some(v => v === value)
  • @Bergi 你能回答一下吗?
  • @qwr 完成,见下文

标签: javascript arrays iterator


【解决方案1】:

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

或者,使用proposed iterator helpers 并检查it.some(v => v === value)1。他们还没有提供反映Array API 的includes 方法。

1:从技术上讲,includes 使用SameValueZero comparison,它与=== 的结果不同,valueNaN

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 2019-01-04
    • 2014-10-08
    • 2011-01-04
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2017-06-04
    相关资源
    最近更新 更多