findIndex
и some
действительно очень похожи, и вы можете легко использовать findIndex
вместо some
.Кроме того, find
имеет аналогичную спецификацию.Но вы не можете легко использовать его для замены 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
вместо [].some(...)
, но последний явно более читабелен, так как имеет лучшую семантику по сравнению с тем, что он делает.