如果至少在回调函数中通过测试的元素,some()
返回true,那么区别的是,findIndex()
是否返回测试成功的第一个元素的索引?
或者是一个更优化的还是比我理解的更多,因为,如果这是唯一的区别,那么我可以简单地从findIndex()
获取索引并检查它是否是#s} -1还是不。
let foo = [
{
'animal':'dog'
},
{
'animal':'cat'
},
{
'animal':'cow'
},
]
foo.find( obj => obj.animal === 'cat' )
{animal: "cat"}
foo.some( obj => obj.animal === 'cat' )
true
答案 0 :(得分:0)
findIndex
和some
确实非常相似,您可以轻松使用findIndex
代替some
。此外,find
具有类似的规范。但是,您无法轻松地使用它来替换{{1}},因为some
的返回值是找不到的元素或find
,您无法区分实际元素。
但undefined
/ findIndex
和find
之间存在细微差别。请参阅some
:
仅对实际存在的数组元素调用
some
;它不会被称为缺少数组的元素。
见这个例子:
callbackfn
但这在大多数应用程序中实际上并不相关。
这些函数存在的原因是你应该如何使用它们的可读性。您应该始终努力编写可读/可维护的代码。当然,您可以编写new Array(1).findIndex(() => console.log('called')); // prints 'called' once
new Array(1).some(() => console.log('called')); // does not print anything
而不是[].findIndex(...) !== -1
,但后者显然更具可读性,因为它具有更好的语义。