javascript - 为什么包含函数不使用二进制搜索
问题描述
有谁知道为什么Array.prototype.includes
不使用二进制搜索算法?
function BinarySearch(names,requiredName)
{
return names.includes(requiredName)?true:false;
}
解决方案
因为规范说要按升序搜索:
22.1.3.11 Array.prototype.includes
注1
include使用 SameValueZero 算法按升序将 searchElement 与数组的元素进行比较,如果在任何位置找到,则返回true;否则,返回false。
解释器无法知道您调用它的数组是否已排序,也不知道其中包含哪些类型的元素。(想象一下,如果数组是由HTMLElement
s 组成的,例如)
推荐阅读
- c++ - 限制输入并再次询问用户正确的范围
- vuejs2 - 无法使用 Element UI 和 iView UI Toolkit 在 Laravel 5.7 和 Vue 2 项目中加载字体
- java - XSL:无法在对方法的调用中转换参数/返回类型
- python - 如何在 Django 中查看 pdf 文件?
- fullcalendar - 在午夜开始的单元格中显示事件(夜班)
- python - 关于 numpy.random.choice 的工作原理
- sql - Oracle (SQL):如何获取 SQL 查询语法
- verilog - 使用三元运算符 (Verilog) 的意外行为
- php - PHP _Session 变量在 php 文件之间丢失。为什么?
- scala - Scala App trait 和 main 如何在内部工作?