javascript - JavaScript 中 includes 方法的时间复杂度

标签 javascript arrays time-complexity

我有一个数组,其中包含某些字符串的一些哈希值, 我不希望我的数组中有重复值,所以我使用 if 逻辑,如下所示:

if(!arrayOfHash.includes(hash_value)){
  arrayOfHash.push(hash_value); 
}

我想知道 JavaScript 中 includes 方法的复杂性。 它是线性搜索函数还是修改后的搜索函数?

最佳答案

规范将此功能描述为线性搜索。 Array.prototype.includes

  1. Let O be ? ToObject(this value).

  2. Let len be ? ToLength(? Get(O, "length")).

  3. If len is 0, return false.
  4. Let n be ? ToInteger(fromIndex). (If fromIndex is undefined, this step produces the value 0.)
  5. If n ≥ 0, then Let k be n.
  6. Else n < 0, Let k be len + n. If k < 0, let k be 0.
  7. Repeat, while k < len ... Increase k by 1.

在一般情况下这是一个相当合理的选择(列表未排序,列表不统一,您不维护额外的数据结构以及列表本身)。

关于javascript - JavaScript 中 includes 方法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760542/

相关文章:

arrays - 列出字符串数组中所有元组的算法

javascript - 如何捕获键盘事件来自哪些键?

javascript - 为什么在 AngularJS 中定义 Controller 时不使用显式注解?

javascript - 用户生成页面结构时应该如何使用AngularJS?

arrays - Excel VBA比较两个二维数组的有效方法

c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?

javascript - 在 Python 中从 WebSocket 读取(来自 Javascript WebSocket 的数据)

arrays - 将整数数组传递给ElasticSearch模板

algorithm - Kruskal 算法的时间复杂度?

file - 文件修改的时间复杂度?