有谁知道为什么Array.prototype.includes
不使用二进制搜索算法?
function BinarySearch(names,requiredName)
{
return names.includes(requiredName)?true:false;
}
答案 0 :(得分:1)
因为规范要求以升序顺序搜索:
22.1.3.11 Array.prototype.includes
注1
包括使用SameValueZero算法按照升序将searchElement与数组元素进行比较,如果在任何位置找到,则返回 true ;否则,返回 false 。
解释器无法知道您调用它的数组是否已排序,也无法确定其中的元素类型。 (想象一下,如果数组是由HTMLElement
组成的,例如)
答案 1 :(得分:1)
二进制搜索是一种搜索已排序数组的算法。
Array.prototype.includes应该能够处理任何数组或类数组对象,而不仅仅是一个已排序的数组。