質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2561閲覧

javaScript storage格納について、格納データを消した時のlengthの動き

FLY2525

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/09/03 12:08

HTML、javascript、cssでメモ帳を作成しようとしています。
そこでjsのstorageを使ったデータ格納を考えています。

調べた結果、
length …… 保存されているデータの数を返す
key(n) …… 保存されているn番目のkeyを返す
getItem(key) …… keyに対応するvalueを取得する
setItem(key, value) …… keyとvalueのペアでデータを保存する
removeItem(key) …… keyに対応するvalueを削除する
clear() …… データをすべてクリアする

ここまで理解しました。

ここから質問、
例えば5つのデータが格納されてたとする
0個目から格納されるので
番号 キー 内容
0 キー1 内容1
1 キー2 内容2
2 キー3 内容3
3 キー4 内容4
4 キー5 内容5
になります。

そこで
removeItem(キー3)で内容3を削除した場合
どうなりますか?

候補1 キーとともに消滅、番号は残る
番号 キー 内容
0 キー1 内容1
1 キー2 内容2
2 × ×
3 キー4 内容4
4 キー5 内容5

候補2 内容のみ残る
番号 キー 内容
0 キー1 内容1
1 キー2 内容2
2 キー3 ×
3 キー4 内容4
4 キー5 内容5

候補3 キーとともに消え、自動で番号がずれる
番号 キー 内容
0 キー1 内容1
1 キー2 内容2
2 キー4 内容4
3 キー5 内容5

キーも削除されるのでしょうか?

そして、削除されない場合、
clear()コマンド以外にキーを削除する方法はないのでしょうか?

また削除した場合、
番号振りはどのようになるのでしょうか?

これ次第によって、storage.lengthによって取得できる範囲が変わるので、削除するごとに格納番号を変更せざる負えません、自力で調べようと思いましたが、やり方が思いつかず、できればstorage内の順番および番号と配列を確認できる方法も教えてもらいたいです。
なおネットに上がっていたこのコードでは内部でしか確認できない番号が分かりません。

javascript

1function show1() { 2 var result = ""; 3 for(var i=0; i<storage.length; i++){ 4 var k = storage.key(i); 5 result += k + ":" + storage.getItem(k) + "<br>"; 6 } 7 document.getElementById("show1").innerHTML = result; 8} 9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これ次第によって、storage.lengthによって取得できる範囲が変わるので、削除するごとに格納番号を変更せざる負えません、自力で調べようと思いましたが、やり方が思いつかず、できればstorage内の順番および番号と配列を確認できる方法も教えてもらいたいです。

Storage はキーの順序は保障されません。ブラウザごとに挙動が変わる可能性があります。

【Storage.key() - Web API インターフェイス | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Storage/key

キーの順序はユーザエージェント依存であり、この順序に頼るべきではありません。


なおネットに上がっていたこのコードでは内部でしか確認できない番号が分かりません。

デベロッパーツールで内容の確認は可能です。(Firefoxの場合デベロッパーツールの設定から「ストレージ」を選ばないと表示されなかったはず)
ただ、前述の通りキーの順序は保障されないため、順序がブラウザによって違う事も可能性としてはあります。(なので順序が保たれる前提でプログラムをしてはいけない)

【Chrome デベロッパーツールの使い方概要 | Web Tips】
http://weback.net/utility/1410/


どのようなコードを書かれるかによりますが、順番の保障が必要であれば配列を使い、Storage には JSON.stringify( array ) を値として入れ、使用するときに JSON.parse( value ) として配列に戻すのが良いと思います。

【Array - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array

【【JavaScript】JSONのparseとstringifyメソッドの使い方 - TASK NOTES】
http://www.task-notes.com/entry/20160719/1468858991

投稿2016/09/03 13:48

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FLY2525

2016/09/03 14:37

なるほど、順序を大切にする理由はありませんが 後々メモ帳の順序を変える機能を加えたいのでstorageを使ったデータ保存は難しそうです。なのでJSONの使い方を調べて作ってみることにしますね。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問