まだ存在しない限り、ある配列から別の配列にアイテムを移動し、それをに格納していますlocalStorage
var queue = [];
function moveToQueue(item) {
if(queue.indexOf(item) == -1) {
queue.push(item);
store();
}
}
function store() {
localStorage.myApp_queue = JSON.stringify(queue);
}
ページが読み込まれると、load 関数を呼び出します。
function load() {
if(typeof localStorage.myApp_queue != 'undefined') {
queue = JSON.parse(localStorage.myApp_queue);
}
}
この時点で、私のインターフェイスqueue
には最後に残したままの が表示されますが、同じアイテムを再度追加しようとすると、「queue.indexOf(item)」が失敗します。の内容は、メソッドが呼び出されるqueue
前と同じではありません。store()/load()
console.log()
ページのリロード前後のいくつかの呼び出しは、空のqueue
. moveToQueue
関数の先頭にログが追加されました
function moveToQueue(item) {
console.log('adding to queue');
console.log(item);
console.log(queue[0]);
console.log(queue.indexOf(item));
...
初期負荷:
adding to queue
e {id: 1, status: "A", title: "Comcar", $$hashKey: "004", $get: function…}
undefined
-1
adding to queue
e {id: 1, status: "A", title: "Comcar", $$hashKey: "004", $get: function…}
e {id: 1, status: "A", title: "Comcar", $$hashKey: "004", $get: function…}
0
ページの更新後 - プッシュしているアイテムはすでにqueue
配列内にあります
adding to queue
e {id: 1, status: "A", title: "Comcar", $$hashKey: "006", $get: function…}
Object {id: 1, status: "A", title: "Comcar", $$hashKey: "004"}
-1
ここで見逃したもの、配列を変更するために何をlocalStorage
しているのか。JSON
ログには、ストレージから返されたアイテムが「オブジェクト」としてリストされていることがわかりますが、元のアイテムの「タイプ」(それについてはよくわかりません) は「e」です。
両方の結果を使用するtypeof
と、「オブジェクト」になります