1. ホーム
  2. javascript

[解決済み] JavaScriptで配列の長さを制限することはできますか?

2023-06-14 22:06:26

質問

商品の閲覧履歴を表示させたいので、ブラウザのクッキーに商品IDを保存しています。

履歴の一覧は5件までなので、Cookieの値を配列に変換して、その長さをチェックして冗長なものをカットしています。

下記のようなコードを試しましたが、配列の項目が削除されず、うまくいきません。

配列の長さを制限して、5つの項目しか保存できないようにする方法をお聞きしたいのですが。

または

配列のインデックス4以降の項目をカットするにはどうしたらよいでしょうか。

var id = product_id;
var browseHistory = $.cookie('history');
if (browseHistory != null) {
  var old_cookie = $.cookie('history');
  var new_cookie = '';

  if (old_cookie.indexOf(',') != -1) {
    var arr = old_cookie.split(',');
    if (arr.length >= 5) {
      arr.splice(4, 1)
    }
  }

  new_cookie = id + ',' + old_cookie;
  $.cookie('history', new_cookie, { expires: 7, path: '/' });
} else {
  $.cookie('history', id, { expires: 7, path: '/' });
}

どのように解決するのですか?

spliceを正しく使っていない。

arr.splice(4, 1)

これはインデックス4の1項目を削除します。 を参照してください。

を使いたいのだと思います。 スライス :

arr.slice(0,5)

とすると、0から4の位置の要素を返します。

これは、あなたのコードの残りの部分(クッキーなど)がすべて正しく動作することを前提としています。