Javascript 在LocalStorage中构建阵列
我正在尝试基于电子商务站点上的产品视图历史在localstorage中构建一个阵列。每次用户查看产品页面时,我都希望将此页面的ID添加到本地存储中的阵列中Javascript 在LocalStorage中构建阵列,javascript,jquery,arrays,local-storage,Javascript,Jquery,Arrays,Local Storage,我正在尝试基于电子商务站点上的产品视图历史在localstorage中构建一个阵列。每次用户查看产品页面时,我都希望将此页面的ID添加到本地存储中的阵列中 var itemArray = []; var myItem = $("li#ref").data("ref"); itemArray.push(myItem); var LS = { set: function (key, val) { return localStorage.
var itemArray = [];
var myItem = $("li#ref").data("ref");
itemArray.push(myItem);
var LS = {
set: function (key, val) {
return localStorage.setItem(key, JSON.stringify(val));
},
get: function (key) {
return JSON.parse(localStorage.getItem(key));
}
};
LS.set("Viewed", itemArray);
我遇到的问题是,它从来没有构建过一个数组——我所看到的最新产品比以前的产品要好,所以我只能得到一个条目
你知道这是否可能实现吗
提前谢谢
Richard您需要将新值附加到本地存储中存储的现有数组,而不是新的空数组:
var LS = {
set: function (key, val) {
return localStorage.setItem(key, JSON.stringify(val));
},
get: function (key) {
return JSON.parse(localStorage.getItem(key));
}
};
var itemArray = LS.get('Viewed') || [];
var myItem = $("li#ref").data("ref");
if (itemArray.indexOf(myItem) !== -1) {
itemArray.push(myItem);
}
LS.set("Viewed", itemArray);
您可能还应该检查该值是否已在数组中,以避免重复。您需要将新值附加到存储在本地存储中的现有数组,而不是新的空数组:
var LS = {
set: function (key, val) {
return localStorage.setItem(key, JSON.stringify(val));
},
get: function (key) {
return JSON.parse(localStorage.getItem(key));
}
};
var itemArray = LS.get('Viewed') || [];
var myItem = $("li#ref").data("ref");
if (itemArray.indexOf(myItem) !== -1) {
itemArray.push(myItem);
}
LS.set("Viewed", itemArray);
您可能还应该检查该值是否已在数组中,以避免重复。如果用户习惯性地使用此站点,则可接受的答案将变得非常缓慢。每当用户查看任何内容时,它都会对视图的整个历史进行解析和重新字符串化 写这本书时就考虑到了这一点。你会写:
var store = Rhaboo.persistent("Views");
if (store.views === undefined) //first run
store.write('views', []);
function onClick(page) { store.views.push(page); }
for (var i = 0; i<store.views.length; i++)
console.log(store.views[i]);
顺便说一句,我写了rhaboo。如果用户习惯性地使用这个网站,那么公认的答案会变得非常缓慢。每当用户查看任何内容时,它都会对视图的整个历史进行解析和重新字符串化 写这本书时就考虑到了这一点。你会写:
var store = Rhaboo.persistent("Views");
if (store.views === undefined) //first run
store.write('views', []);
function onClick(page) { store.views.push(page); }
for (var i = 0; i<store.views.length; i++)
console.log(store.views[i]);
顺便说一句,我写了rhaboo。非常感谢这么简单:并且还添加了检查LS.get('Viewed')是否返回非数组的对象(或者在某些初始化状态下插入空数组),因为第一次调用LS.get('Viewed')时,它将返回null。感谢你们两位的帮助,我现在的问题是我从未进入itemArray.push(myItem);在第一个实例中,如果有意义的话,项数组总是[]。非常感谢这么简单:还要添加检查LS.get('Viewed')是否返回不是数组的对象(或者在某些初始化状态下插入空数组),因为第一次调用LS.get('Viewed')时,它将返回null。谢谢你们两位,我现在遇到的问题是我从未进入itemArray.push(myItem);在第一个实例中,如果有意义的话,项数组总是[]。