gpt4 book ai didi

javascript - 如何计算 localStorage 中的特定 ID?

转载 作者:行者123 更新时间:2023-11-30 19:12:38 27 4
gpt4 key购买 nike

我正在为我的投资组合项目编写用户购物车。我想保存产品 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 的值,但我的函数仍然附加整个对象而不是更新项目的计数。

我该如何解决这个问题?

最佳答案

这段代码会

  1. localStorage读取购物车
  2. 检查购物车中是否存在id
  3. 如果是,增加计数
  4. 否则添加计数为1的项
  5. 如果 localStorage 为空,则创建整个对象

所以,代码是

export const addToCart = (id, userIsLoggedIn) => {
let cart = [];
let itemToAdd = {
id,
count: 1,
};
if (localStorage.getItem('cart')) {
cart = JSON.parse(localStorage.getItem('cart'));
let item = cart.find(el => el.id === id);
if (!item) {
cart.push(itemToAdd);
} else {
item.count ++;
}
} else {
cart = [itemToAdd];
}
localStorage.setItem('cart', JSON.stringify(cart))
console.log(localStorage.getItem('cart'))
};

或者

export const addToCart = (id, userIsLoggedIn) => {
let cart = {};
if (localStorage.getItem('cart')) {
cart = JSON.parse(localStorage.getItem('cart'));
}
cart[id] = (cart[id] || 0) + 1;
localStorage.setItem('cart', JSON.stringify(cart));
console.log(localStorage.getItem('cart'));
};

在这个方法中,购物车的内容是这样的

{
"1111": 2,
"1234": 1
}

等等

关于javascript - 如何计算 localStorage 中的特定 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com