HTML5 localStorage/sessionStorage にオブジェクトを保存する方法

2024-04-02

HTML5 localStorage と sessionStorage は、ブラウザのローカルストレージにデータを保存するための API です。これらの API を使用すると、ユーザーのブラウザにデータを保存し、次回ユーザーがサイトを訪れたときにそのデータを読み取ることができます。

オブジェクトの保存

localStorage と sessionStorage はどちらもキーと値のペアとしてデータを保存します。オブジェクトを保存するには、まずオブジェクトを JSON 文字列に変換する必要があります。

JSON 文字列への変換

JavaScript には、オブジェクトを JSON 文字列に変換する JSON.stringify() メソッドが用意されています。

const object = {
  name: "John Doe",
  age: 30,
};

const json = JSON.stringify(object);

console.log(json); // {"name":"John Doe","age":30}

localStorage.setItem() メソッドを使用して、キーと値のペアを localStorage に保存できます。

localStorage.setItem("user", json);
sessionStorage.setItem("user", json);
const json = localStorage.getItem("user");

const object = JSON.parse(json);

console.log(object); // {name: "John Doe", age: 30}
const json = sessionStorage.getItem("user");

const object = JSON.parse(json);

console.log(object); // {name: "John Doe", age: 30}
localStorage.removeItem("user");
sessionStorage.removeItem("user");

注意事項

  • localStorage と sessionStorage はブラウザごとに異なるストレージ領域を使用します。
  • localStorage はブラウザが閉じられるまでデータが保存されます。
  • 保存できるデータ量はブラウザによって異なります。

補足

上記の例では、オブジェクトを JSON 文字列に変換して保存しています。これは、オブジェクトをそのまま保存しようとすると、エラーが発生するためです。

さらに詳しく知りたい場合




<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Local Storage サンプル</title>
</head>
<body>
  <button onclick="save()">保存</button>
  <button onclick="load()">読み込み</button>
  <button onclick="remove()">削除</button>

  <script src="script.js"></script>
</body>
</html>

JavaScript

const object = {
  name: "John Doe",
  age: 30,
};

function save() {
  const json = JSON.stringify(object);
  localStorage.setItem("user", json);
}

function load() {
  const json = localStorage.getItem("user");
  const object = JSON.parse(json);
  console.log(object);
}

function remove() {
  localStorage.removeItem("user");
}

このコードは、object オブジェクトを localStorage に保存し、読み込み、削除する方法を示しています。

実行方法

  1. 上記のコードを HTML ファイルと JavaScript ファイルに保存します。
  2. HTML ファイルをブラウザで開きます。
  3. "保存" ボタンをクリックします。
  4. コンソールを確認すると、object オブジェクトの内容が表示されます。
  5. コンソールには何も表示されません。

このコードは基本的な例です。実際の使用例では、エラー処理などを行う必要があります。




オブジェクトを HTML5 localStorage/sessionStorage に保存する他の方法

JSON.parse() と JSON.stringify() を使用せずにオブジェクトを localStorage/sessionStorage に保存するには、以下の方法があります。

オブジェクトを文字列に変換するには、以下の方法があります。

  • オブジェクトの各プロパティをループ処理し、プロパティ名と値を連結する。
  • オブジェクトを toString() メソッドで文字列に変換する。

例:オブジェクトをループ処理して文字列に変換する

const object = {
  name: "John Doe",
  age: 30,
};

const json = "";
for (const prop in object) {
  json += `${prop}:${object[prop]},\n`;
}

// 末尾の , を削除
json = json.slice(0, -2);

console.log(json); // name:John Doe,age:30
const object = {
  name: "John Doe",
  age: 30,
};

const json = object.toString();

console.log(json); // [object Object]

文字列を localStorage/sessionStorage に保存する

localStorage.setItem() または sessionStorage.setItem() メソッドを使用して、文字列を localStorage/sessionStorage に保存できます。

例:文字列を localStorage に保存する

const object = {
  name: "John Doe",
  age: 30,
};

const json = "";
for (const prop in object) {
  json += `${prop}:${object[prop]},\n`;
}

// 末尾の , を削除
json = json.slice(0, -2);

localStorage.setItem("user", json);
const json = localStorage.getItem("user");

console.log(json); // name:John Doe,age:30

文字列をオブジェクトに変換する

eval() 関数または new Function() コンストラクタを使用して、文字列をオブジェクトに変換できます。

例:eval() 関数を使用して文字列をオブジェクトに変換する

const json = localStorage.getItem("user");

const object = eval(`(${json})`);

console.log(object); // {name: "John Doe", age: 30}
const json = localStorage.getItem("user");

const object = new Function(`return ${json}`)();

console.log(object); // {name: "John Doe", age: 30}

第三者ライブラリの使用

localForagestore.js などの第三者ライブラリを使用して、オブジェクトを localStorage/sessionStorage に保存することができます。これらのライブラリは、オブジェクトを JSON 文字列に変換したり、逆変換したりする必要なく、オブジェクトを直接保存/読み込みできる機能を提供します。

例:localForage を使用してオブジェクトを localStorage に保存する

import localforage from "localforage";

const object = {
  name: "John Doe",
  age: 30,
};

localforage.setItem("user", object).then(() => {
  console.log("保存成功");
});
import store from "store";

const object = {
  name: "John Doe",
  age: 30,
};

store.set("user", object);

console.log("保存成功");
  • JSON.parse() と JSON.stringify() を使用しない方法は、コードが複雑になる可能性があります。
  • 第三者ライブラリを使用する場合は、ライブラリのドキュメントをよく読んでから使用してください。

javascript html local-storage


えっ、そんなに簡単だったの?JavaScriptで2つの日付間の差日数を計算する方法

DateオブジェクトのgetTimeメソッドは、日付をミリ秒単位のタイムスタンプに変換します。このタイムスタンプを利用して、2つの日付間の差日数を計算することができます。この方法のメリット:シンプルで分かりやすい多くのブラウザでサポートされている...


hashchangeイベント、MutationObserver、AJAXを駆使してハッシュ変更を捉える

Webページにおいて、URLのフラグメント識別子(ハッシュ)は、ページ内の特定のセクションへのリンクや、アプリケーションの状態を保持するために使用されます。JavaScriptでロケーションハッシュの変更を検出することで、ハッシュの変化に応じて動的にコンテンツを更新したり、アプリケーションの動作を制御したりすることができます。...


JavaScript、jQuery、およびテキストボックスを使用してテキストボックスの内容変更を検出する方法

このガイドを理解するには、以下の知識が必要です。JavaScript の基本構文jQuery の基礎知識HTML テキストボックステキストボックスの内容変更を検出するには、いくつかの方法があります。onkeyup イベントは、テキストボックス内のキーが押された後に発生します。このイベントを使用して、テキストボックスの内容が変更されたかどうかを確認できます。...


【初心者向け】Node.jsモジュールをモックでテスト:外部モジュールとグローバルrequireも楽々!

まず、テスト対象のモジュールの機能と、外部モジュールやグローバルなrequire関数との依存関係を理解する必要があります。モジュールのソースコードを読み込み、どのような外部モジュールを使用し、require関数をどのように呼び出しているのかを確認しましょう。...


関数パラメータで叶える、洗練されたJavaScriptプログラミング

JavaScriptでは、関数だけでなく、他の関数もパラメータとして渡すことができます。これは、コードをより柔軟で再利用しやすくする強力な方法です。関数をパラメータとして渡すには、通常の引数と同じように、関数を呼び出す際に渡します。上記の例では、greetMany 関数は names 配列と greetFunction 関数を受け取ります。 greetMany 関数は、names 配列内の各名前に対して greetFunction 関数を呼び出します。...


SQL SQL SQL SQL Amazon で見る



【サンプルコード付き】JavaScriptでローカルストレージにデータを保存する

HTMLファイルに以下のコードを追加します。解説arrayという変数に、保存したい配列を代入します。JSON. stringify()を使って、配列をJSONに変換します。localStorage. setItem()を使って、JSONデータをローカルストレージに保存します。