Biome
こちらが公式ページです。こちらの記事でセットアップや初期設定がわかりやすくまとめられていたので、説明は省略させていただきます。
本題の配列操作について
こちらの公式ページのドキュメントを参考にしました。結論から言うとforEach
だけがダメというわけでなく、filter
やmap
でメソッドチェーンにするのも推奨していない主張みたいです。
実際にこちらのPlaygroundでもエラーになるので、見てみてください。それでは、どのように対処するのかというと、for…of
で対応するのが推奨されているみたいです。実際にこちらのPlaygroundでfor…of
で配列操作を行なってもエラーになりません。
実装
filter
やmap
とforEach
を組み合わせて、配列操作を行います。
const numbers = [1, 2, 3, 4, 5, 6];
// Step 1: `filter`で偶数を抽出(1回目の反復処理)
const evenNumbers = numbers.filter((num) => num % 2 === 0);
// Step 2: `map`で値を2倍に変換(2回目の反復処理)
const doubledNumbers = evenNumbers.map((num) => num * 2);
// Step 3: `forEach`で結果を出力(3回目の反復処理)
doubledNumbers.forEach((num) => {
console.log('🚀 ~ doubledNumbers.forEach ~ num:', num);
});
上記のコードで計3回の反復をしています。
-
numbers
の要素をfilter
で1回目の反復。 - 新しく生成された
evenNumbers
をmap
で2回目の反復。 - 新しく生成された
doubledNumbers
をforEach
で3回目の反復。
for…of
を用いた配列操作を行います。
const numbers = [1, 2, 3, 4, 5, 6];
const result = []; // 結果を格納する配列
// `for...of`で1回の反復処理で完結
for (const num of numbers) {
if (num % 2 === 0) {
// 偶数を判定
result.push(num * 2); // 2倍に変換して結果に追加
}
}
一方でこちらは、計1回の反復をしています。
- 配列
numbers
を一回だけ反復し、条件に一致した値を直接処理しています。
filterやmapの単独使用は上記の主張に反していないのか考えてみる
結論としては、逸脱していないと考えられる。上記での議論はfilter
やmap
とforEach
と複数回の反復が発生するケースを問題視しているためです。map
で一回の反復になるケースとなる単独での使用は該当しないと考えられます。React
実装者ならよく使うこのケースですが、特に問題ないと言えるでしょう。
参考記事