JavaScript | 再帰とループの性能比較

JavaScript JavaScript
スポンサーリンク

では「再帰を使った実用的な JSON 処理」の例を見てみましょう。実際の開発では、API から受け取った JSON データを解析して「すべてのキーを取り出す」「特定の値を探す」といった処理がよくあります。こうした入れ子構造は再帰が得意です。


例1:JSONのすべてのキーを取り出す

function collectKeys(obj, keys = []) {
  for (const key in obj) {
    keys.push(key);
    if (typeof obj[key] === "object" && obj[key] !== null) {
      collectKeys(obj[key], keys); // 再帰で潜る
    }
  }
  return keys;
}

const data = {
  user: {
    name: "Alice",
    address: {
      city: "Tokyo",
      zip: "100-0001"
    }
  },
  active: true
};

console.log(collectKeys(data));
// ["user", "name", "address", "city", "zip", "active"]
JavaScript

👉 ネストがどれだけ深くても「オブジェクトなら再帰で潜る」だけで処理できる。


例2:特定の値を探す

function findValue(obj, target) {
  for (const key in obj) {
    if (obj[key] === target) return true;
    if (typeof obj[key] === "object" && obj[key] !== null) {
      if (findValue(obj[key], target)) return true;
    }
  }
  return false;
}

console.log(findValue(data, "Tokyo")); // true
console.log(findValue(data, "Osaka")); // false
JavaScript

👉 ネストの深さを気にせず「値が見つかるまで潜る」ことができる。


✅ ポイント

  • JSON は「入れ子構造(ツリー構造)」なので再帰が自然にフィットする。
  • ループだけで書こうとすると「スタックやキューを自分で管理」する必要があり、コードが複雑になる。
  • 再帰なら「オブジェクトなら潜る」というルールだけでシンプルに書ける。

👉 ここまでで「再帰の実用例」をファイル構造や配列から JSON に広げられました。
次は「再帰を使ったツリー構造の変換(例: JSONをHTMLリストに変換)」をやってみると、さらに実務的な応用が見えてきます。

タイトルとURLをコピーしました