我需要对数字数组执行线性搜索。如果我使用find(),是否可以保证从索引0开始进行线性搜索?
我意识到我可以简单地使用for循环,但是想使用更优雅的东西。
答案 0 :(得分:2)
是的,它总是从索引0开始,每次迭代递增1,并返回与条件匹配的第一个元素。例如:
const arr = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 1, name: 'c' }];
console.log(
arr.find(obj => obj.id === 1)
);
here描述了Array.prototype.find
所需实现的详细信息:
- 让k为0。
重复,而k
a。令Pk为ToString(k)。
b。令kValue为Get(O,Pk)。
c。 ReturnIfAbrupt(kValue)。
d。令testResult为ToBoolean(Call(predicate,T,«kValue,k,O»))。e。 ReturnIfAbrupt(testResult)。
f。如果testResult为true,则返回kValue。
g将k增加1。
返回未定义。
如您所见,它使k
每次迭代增加1,检查每个值的测试是否通过,并进行return
的校验,就像for
循环可以做到的那样。 break
。
答案 1 :(得分:2)
find对数组中的每个元素以升序调用一次谓词,直到找到谓词返回true的谓词