比較するとすれば for of の方が適切ですね。
の追記に対しての回答を追記いたします。
考え方は同様です。
for of
は、とかく途中で止める止めないに関わらず、
ブロック内で様々な処理を行うことができるため、より柔軟な実装が可能でしょう。
対して、some
メソッドは、必ず論理値を返すという(コールバック内でreturn
させなくとも)仕様のため、
論理値を必要とする場面に使用すべきです。
つまり、結局は、
メリット云々ではなく、
そのメソッドの役割や仕様を考え使うことが、重要ということです。
-------- 以下元回答 --------
またネットにもsomeを使うべきという記事があったのですが
その記事をよくご覧になってください。
**途中でループを抜けたい時がある場合はfor
よりsome
の方が・・・**的な内容です。
(そして、for
とforEach
はとても似ているが別物)
確かに、それであれば、someメソッドを使う理由になってもいいかと思います。
が、質問者さんの観点での(メリット云々)基準で考えるのは間違っていると思います。
役割の違いであって、どちらかを使えばいいということではありません。
可読性云々の話でもないと、私は思います。
forEach
メソッドは、配列の全走査を目的(仕様)としたメソッドであり、
some
は、コールバックメソッドにて、論理値を返していき、真となったらループを抜け、その論理値を返すという役割(仕様)があります。
そして、質問文のコードでは確かに役割が見えませんが、
下記のように、返値を使用することが可能になります。
javascript
1const arr = [1, 3, 25, 100, 15, 30];
2
3if (arr.some(i => i >= 100 )) {
4 console.log('100以上の数値を含む');
5 // 100以上の数値がある場合、次の処理にいきたい、など
6} else {
7 console.log('全て100より小さい');
8 // 100より小さい値しかない時に実行したい処理
9}
そして、全走査をしたい時は、わざわざsome
使うことはありません。
forEach
を使えばいいだけの話です。
some
はあくまで、一つでも条件に当てはまる、論理値が必要である時に使うべきです。
可読性云々より、そのメソッドの役割や仕様を考え使うことが、
エンジニアにはとても大事だと思います。
(こっちのメソッド使った方が妥当であるということを考えられると、より無駄もなく、人にもわかりやすいコードになっていく)