← ClaudeAtlas

avoid-forlisted

Avoid for loops (C-style, for...of, for...in) in TypeScript/JavaScript. Prefer higher-order Array methods like map, filter, find, some, every, reduce. Use when writing or reviewing loops or iteration over arrays, objects, Map, Set, or String.
ncaq/konoka · ★ 3 · AI & Automation · score 72
Install: claude install-skill ncaq/konoka
# `for`文をなるべく避ける `for`文は強力すぎて、 コードの意図が読み取りにくくなります。 構造化プログラミングにおいて`goto`相当の機能を避けるのと同じ理由で、 `for`文もなるべく避けてください。 避ける対象は以下の全てです。 - C言語方式の`for (let i = 0; i < n; i++)` - `for...of` - `for...in` forではありませんが、 同じくループ構文の以下も避けてください。 - `while` - `do...while` ## なぜ避けるのか `for`文は何でもできてしまいます。 - 要素の変換 - 絞り込み - 集計 - 検索 - 副作用の実行 どの操作をしているのかはループ本体を注意深く読まないと分かりません。 `map`や`filter`のような高抽象度の関数は、 名前を見ただけで「変換している」「絞り込んでいる」と意図が伝わります。 `goto`が制御フローを自由にしすぎて構造化プログラミングで避けられたのと同じく、 `for`はデータの流れを自由にしすぎます。 より弱く意図の限定された関数に置き換えることで、 読み手の負担が減ります。 ## Arrayの場合 Arrayのメソッドでやりたいことに対応するものを選びます。 | やりたいこと | `for`の代替 | | -------------------------- | ---------------------------- | | 各要素を変換する | `map` | | 変換して一段平坦化する | `flatMap` | | 条件で絞り込む | `filter` | | 最初の一致を探す | `find` / `findIndex` | | 最後の一致を探す | `findLast` / `findLastIndex` | | 含まれるか調べる | `includes` | | 位置を調べる | `indexOf` / `lastIndexOf` | | 一つでも満たすか調べる | `some` | | すべて満たすか調べる | `every` | | 単一の値に集計する | `reduce` / `reduceRight` | | 副作用だけ実行する | `forEach` | | ネストした配列を平坦化する | `flat` | | 文字列に連結する | `join` | | 並べ替える | `toSorted` | | 逆順にする | `toReversed` | 変換と絞り込みはチ