連続回数の値がない状態を、実装が0回と誤認していました。JavaScriptの型変換自体は仕様どおりですが、値なしを確認する前に数値化した順番が問題です。最新のテスト記録1件へ絞り、3が0へ変わる地点を追いました。
修正後は複数の確認ブラウザーで表示を比較し、初期化後に新しい1件が保存されるところまで確認しています。ただし、ブラウザー差の理由は完全には確定していません。
値なしを0回として扱う誤認が起きた
一方のブラウザーでは連続回数が表示され、別のブラウザーでは全員が完全達成に見えるなど、表示が揺れました。データには連続回数の直接列がなく、履歴配列から復元する構成でした。
最初はキャッシュも疑いましたが、新しいブラウザーでも問題が出ました。そこで画面から原因を推測せず、データ取得、履歴作成、判定、表示直前の順に値を追いました。
連続回数3の最新1件へ対象を絞った
過去記録をまとめて見ると条件の違うデータが混ざります。連続回数3と分かっている最新のテスト記録1件だけを基準にし、正常なら3の値がどこで0になるか確認しました。
これは「別々のテストを連続3回実施した」という記録ではありません。確認できたのは、連続成功回数3の最新1件を追跡したことです。
値なしを先に判定してから数値化した
確認した値はnullでした。これを先にNumberへ渡すと0になり、プログラムは「連続回数0」と判断して履歴復元へ進みませんでした。
const count = value === null || value === undefined || value === ""
? null
: Number(value);
null、undefined、空文字は値なしのまま残し、それ以外だけ数値へ変換しました。広い範囲を直さず、値が変化した正規化処理だけを修正しています。
修正後の検証と未確認範囲
- 確認:修正コードの保存内容
- 確認:複数の確認ブラウザーで同じ記録の表示を比較
- 確認:サーバー側記録とブラウザー内保存を初期化
- 確認:初期化後に新しいテスト1件を保存
- 未確認:すべてのブラウザーで同じ結果になること
- 未確定:ブラウザーごとに表示が揺れた技術的理由
