我有一个包含某些字符串的哈希值的数组,我不希望我的数组中有重复值,所以我使用这样的if逻辑
if(!arrayOfHash.includes(hash_value)){
arrayOfHash.push(hash_value);
}
Run Code Online (Sandbox Code Playgroud)
我想知道JavaScript中includes()函数的复杂性.它是线性搜索功能还是修改后的搜索功能?
规范将此功能描述为线性搜索。Array.prototype.includes
让O成为?ToObject(此值)。
让伦成为?ToLength(?Get(O,“ length”))。
- 如果len为0,则返回false。
- 让n成为?ToInteger(fromIndex)。(如果未定义fromIndex,则此步骤将产生值0。)
- 如果n?0,则令k为n。
- 否则n <0,令k为len + n。如果k <0,则令k为0。
- 重复,当k <len ... 将k增加1。
在一般情况下,这是一个相当合理的选择(列表未排序,列表不统一,您不维护列表本身以及其他数据结构)。