从 WebStorage 获取一组的所有项目
Getting all items of one group from WebStorage
我想在我的网站上使用 WebStorage 实现简单的购物车系统。项目是具有 格式 和 数量 值的图片。有一个计数器值,其中包含当前存储中可用的项目数,每个新项目都以这种格式添加到 WebStorage:
item<id> = 1:3,5
现在我在列出存储中的项目时遇到问题。例如,如果用户购买 5 件商品并删除 item0
和 item3
(item -= 2
),即使我检查元素是否存在,我也无法使用简单的 for 循环获取所有值存在于存储中:
var len = parseInt(localStorage.getItem("items"));
for (let i = 0; i < len; i++) {
if (localStorage.getItem("item" + i)) {
// show element on the page
}
}
Len 将是三,但我仍然有 item5
,但不会显示。
当项目从页面中删除时,我应该创建新的项目 ID 数组并删除 ID 还是有更好的方法来处理这个问题?
最好使用 JSON 对象来处理您的所有内容。
您的代码看起来像这样来设置数据:
// initial data
var cartData = {
items: ['item1', 'item2', 'item3']
};
// stringify your object so it can be saved into localStorage
localStorage.setItem('cart', JSON.stringify(cartData));
然后你可以轻松remove/loop通过项目:
// get cart
var cartData = JSON.parse( localStorage.getItem('cart') );
// delete 2nd item
cartData.items.splice(1, 1);
// loop through items
for(var i = 0, l = cartData.items.length; i < l; i++) {
// do something with cartData.items[i]
}
我想在我的网站上使用 WebStorage 实现简单的购物车系统。项目是具有 格式 和 数量 值的图片。有一个计数器值,其中包含当前存储中可用的项目数,每个新项目都以这种格式添加到 WebStorage:
item<id> = 1:3,5
现在我在列出存储中的项目时遇到问题。例如,如果用户购买 5 件商品并删除 item0
和 item3
(item -= 2
),即使我检查元素是否存在,我也无法使用简单的 for 循环获取所有值存在于存储中:
var len = parseInt(localStorage.getItem("items"));
for (let i = 0; i < len; i++) {
if (localStorage.getItem("item" + i)) {
// show element on the page
}
}
Len 将是三,但我仍然有 item5
,但不会显示。
当项目从页面中删除时,我应该创建新的项目 ID 数组并删除 ID 还是有更好的方法来处理这个问题?
最好使用 JSON 对象来处理您的所有内容。
您的代码看起来像这样来设置数据:
// initial data
var cartData = {
items: ['item1', 'item2', 'item3']
};
// stringify your object so it can be saved into localStorage
localStorage.setItem('cart', JSON.stringify(cartData));
然后你可以轻松remove/loop通过项目:
// get cart
var cartData = JSON.parse( localStorage.getItem('cart') );
// delete 2nd item
cartData.items.splice(1, 1);
// loop through items
for(var i = 0, l = cartData.items.length; i < l; i++) {
// do something with cartData.items[i]
}