【发布时间】:2019-10-10 19:44:22
【问题描述】:
我正在为我的投资组合项目编写用户购物车。我想保存产品的 ID 以及存储中有多少特定 ID 的计数。 我希望我的数据看起来像这样:
[
{id: '64783', count: '5'},
{id: '111', count: '50'},
]
由于数据在 localStorage 我已经用户 JSON 解析和字符串化,但我不知道如何在上面列出的 LS 中实现数据模型。 当然,我可以只存储多个 ID,即使它们相同,然后在显示购物车时对其进行过滤,但我认为这不是最佳选择。
export const addToCart = (id, userIsLoggedIn) => {
let cart = [];
let itemToAdd = {
id,
count: 0,
};
if (localStorage.getItem('cart')){
cart = JSON.parse(localStorage.getItem('cart'));
let count = cart.filter(el => el.id === id).length
console.log(count)
}
cart.push(itemToAdd);
localStorage.setItem('cart', JSON.stringify(cart))
console.log(localStorage.getItem('cart'))
};
我可以正确获取 count 的值,但我的函数仍然附加整个对象,而不是更新项目的计数。
我该如何解决这个问题?
【问题讨论】:
-
试试
cart.filter(el => el.id === id).length,因为每个元素都是一个具有id属性的对象 -
cart是一个数组,没有属性count。数组中的对象具有该属性
标签: javascript reactjs object local-storage