我需要在数字数组上执行线性搜索。如果我使用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
所需实施的详细信息:
- 让K为0。
重复,而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。
返回未定义。
如您所见,它会将k
乘以每次迭代1,检查测试是否通过每个值并进行return
,则像for
循环一样,使用break
。