为什么包含函数不使用二进制搜索

时间:2018-05-13 06:02:30

标签: javascript

有谁知道为什么Array.prototype.includes不使用二进制搜索算法?

function BinarySearch(names,requiredName)
{
   return names.includes(requiredName)?true:false;
}

2 个答案:

答案 0 :(得分:1)

因为规范要求以升序顺序搜索:

22.1.3.11 Array.prototype.includes

  

注1

     

包括使用SameValueZero算法按照升序将searchElement与数组元素进行比较,如果在任何位置找到,则返回 true ;否则,返回 false

解释器无法知道您调用它的数组是否已排序,也无法确定其中的元素类型。 (想象一下,如果数组是由HTMLElement组成的,例如)

答案 1 :(得分:1)

二进制搜索是一种搜索已排序数组的算法。

Array.prototype.includes应该能够处理任何数组或类数组对象,而不仅仅是一个已排序的数组。