FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[JavaScript]ダウンロードデータ格納オブジェクトから古いデータを削除する

先日リリースした囲碁定石勉強用サイト「囲碁定石トレーニング」に、定石データを追加した。
ダウンロードした定石データはキャッシュ用オブジェクトに格納するが、定石データが増えたのでキャッシュに上限を設定した。
上限に達した場合、一番古いデータがキャッシュオブジェクトからdeleteされる。

実装は以下のようにした。
・「一番古いデータ」を得るために、キャッシュのメンバ名格納配列を作成
  /**
   * 問題データキャッシュ。メンバ名は問題選択radioのval。
   * メンバの値はダウンロードしたgetdata
   * @type {Object}
   */
  this.pdatacache = {};
  /**
   * 問題データキャッシュのメンバ名格納配列
   * @type {Array.<string>}
   */
  this.pdatacname = [];

・キャッシュを格納するメソッド
/**
 * 問題データキャッシュセット
 * @param {string} probval 問題選択radioのval
 * @param {Object} pdata セットする問題データ
 */
mijoseki.Action_.prototype.setpCache = function(probval, pdata) {
  if (this.pdatacache[probval]) {
    // migoprb.copy()は、オブジェクトをコピーする関数
    this.pdatacache[probval] = migoprb.copy(pdata);
  } else {
    if (this.pdatacname.length >= mijoseki.con.num.climit) {
      // キャッシュ数が上限のため、古いキャッシュを削除
      var delval = this.pdatacname.shift();
      delete this.pdatacache[delval];
    }
    this.pdatacname.push(probval);
    this.pdatacache[probval] = migoprb.copy(pdata);
  }
};

ブログに書くほどのことじゃない気もするが、備忘録として。
スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。