2025/03/24 08:53 Writing a tiny undo/redo stack in JavaScript

やあ、ロボ子。今日はUIのアンドゥ機能の実装について話すのじゃ。

アンドゥ機能ですか、博士。ユーザーインターフェースでよく使う機能ですね。

そうじゃ。アンドゥ機能の実装方法には、アンドゥスタックとバージョン履歴の2種類があるらしい。

なるほど。今回はアンドゥスタックに焦点を当てるんですね。

その通り!この記事によると、アンドゥ可能なアクションはスタックにプッシュされ、アンドゥが要求されると、スタックからアクションがポップされてロールバックアクションが適用されるらしい。

アンドゥされたアクションはリドゥできるんですね。そして、新しいアンドゥ可能なアクションが追加されると、リドゥ可能なアクションは破棄される、と。

そうそう。従来の実装では、JS配列とインデックスを使うことが多いらしいが、インデックスを使うとエラーが起きやすいのじゃ。

確かに、存在しないインデックスへのアクセスや、Array.slice/spliceのオフセットミスはよくありますね。

そこで、この記事では2つのスタック(undoStackとredoStack)を使うことを提案しているのじゃ。アンドゥ/リドゥアクションは、スタック間で要素を移動させる。

なるほど、スタックを使うことで、より安全にアンドゥ/リドゥを管理できるんですね。

そういうことじゃ!実装例も載っておるぞ。見てみるのじゃ。

はい、拝見します。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。