JavaScript中的findIndex()和some()之间的区别

时间:2018-06-04 14:09:46

标签: javascript find

如果至少在回调函数中通过测试的元素,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

1 个答案:

答案 0 :(得分:0)

findIndexsome确实非常相似,您可以轻松使用findIndex代替some。此外,find具有类似的规范。但是,您无法轻松地使用它来替换{​​{1}},因为some的返回值是找不到的元素或find,您无法区分实际元素。

undefined / findIndexfind之间存在细微差别。请参阅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,但后者显然更具可读性,因为它具有更好的语义。