【问题标题】:How to update array object in localStorage?如何更新 localStorage 中的数组对象?
【发布时间】:2021-06-24 05:46:43
【问题描述】:

当此对象已存在时,我想更新 localStorage 选定对象的数量。它将在 else if 中更改触发器 handleAddCart 条件语句。 ***handleAddCart > else if

//this append function for concat 
const appendToStorage = (name, data) => {
    var prevItems = localStorage.getItem(name)
    try{
        prevItems = JSON.parse(prevItems);
    } catch (e){
        prevItems = []
    }
    localStorage.setItem(name, JSON.stringify(prevItems.concat(data)))
}

这是提交处理程序

const handleAddCart = () => {
    //when there is no array stored
    if (localStorage.getItem('cartList') === null) {
        localStorage.setItem('cartList',JSON.stringify(cartList))
    }
    if (cartItem.size && cartItem.quantity) {
        //1st when there is no array
        if (!localData) {
            appendToStorage('cartList', cartItem)
        } else if (localData.some((item) => item.cartId === cartItem.cartId)) {
            //when array contain same object
            var itemPrice = localData.find((item) => item.cartId === cartItem.cartId);
            
        } else {
            //concat new object
            appendToStorage('cartList', cartItem)
        }

        history.push('/shop')
        setItemSize(null)
        setSelectWarning(false);
    } else{
        setSelectWarning(true)
    }
}

cartItem 是一个对象,而 cartList 是一个数组。 cartItem 是这样的-

CartItem = {
        name: '',
        cartId: '',
        price: '',
        size: '',
        quantity: 1,
        img: ''
    }
CartList = []

【问题讨论】:

  • 这段代码有什么问题?
  • 一切正常。但我无法更新对象。请参阅 handleAddCart 第 11 行(带注释)> else if > 哪里需要更新对象

标签: javascript arrays arrayobject


【解决方案1】:
var sameItem = JSON.parse(localStorage.cartList);
            for(var i = 0;i < sameItem.length; i++){
                if (cartItem.cartId === sameItem[i].cartId) {
                    sameItem[i].quantity += cartItem.quantity;
                    break;
                }
            }
            localStorage.setItem('cartList',JSON.stringify(sameItem))

【讨论】:

    猜你喜欢
    • 2020-09-01
    • 2021-11-25
    • 2021-07-24
    • 2016-05-30
    • 1970-01-01
    • 2019-09-22
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多