在 ES6 中,Array 的 find 方法是否执行线性搜索?



我需要在数字数组上执行线性搜索。如果我使用find((,是否可以保证我从索引0,向内进行线性搜索?

我意识到我可以简单地使用循环,但想使用更优雅的东西。

是。规范指出:

查找数组的每个元素的谓词一次,直到找到谓词返回true

的呼叫

是的,它始终以索引0开始,每次迭代递增1个,然后返回与标准匹配的第一个元素。例如:

const arr = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 1, name: 'c' }];
console.log(
  arr.find(obj => obj.id === 1)
);

此处描述了Array.prototype.find所需实施的详细信息:

  1. 让K为0。
  2. 重复,而K<Len:

    a。令PK为ToString(K(。

    b。让Kvalue获得(O,PK(。

    c。returnifabrupt(kvalue(。

    d。让testResult为toboolean(呼叫(谓词,t,«kvalue,k,o»((。

    e。returnifabrupt(testResult(。

    f。如果TestResult为真,请返回Kvalue。

    g。将K增加1。

  3. 返回未定义。

如您所见,它会将k乘以每次迭代1,检查测试是否通过每个值并进行return,则像for循环一样,使用break

相关内容

最新更新