Jquery用更新后的数组更新localstorage项

6fe3ivhb  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(127)

我正在尝试用新的已更新数组更新localstorage项。我面临的问题是,我不能正确地更新我的数组并将其发送到localstorage项。所以我尝试的是先得到本地存储项。然后查找键为qid的现有对象。如果找到,则使用qP_val更新qty值。我能够开始工作,但我如何使用此阵列的更新版本更新现有阵列stored_quote

function updateQuoteProduct(qP, qP_val){

    var stored_quote = JSON.parse(localStorage.getItem("iwQuote")); 

    obj = stored_quote.findIndex((obj => obj.qid === qP));

    stored_quote[obj].qty = parseInt(qP_val)

    /* now I want to push the updated array back to */ 
    /* the original stored_quote array and replace  */ 
    /* the old object                               */
    /********************************************** */
    
    stored_quote.push(stored_quote[obj])
    

    /* update the localStorage again with new data */
    localStorage.setItem("iwQuote", JSON.stringify(stored_quote));
    

}

字符串

i2loujxw

i2loujxw1#

此语句stored_quote.push(stored_quote[obj])导致问题,因为您正在将更新的对象推回数组。因此,它是复制它而不是覆盖它。
因此,您不需要再次推动对象。相反,您可以直接更新数组中的对象(您已经这样做了),它将自动反映更改。
示例**:**

function updateQuoteProduct(qP, qP_val) {

    var stored_quote = JSON.parse(localStorage.getItem("iwQuote")); 

    const index = stored_quote.findIndex((obj => obj.qid === qP));

    if (index !== -1) {
        stored_quote[index].qty = parseInt(qP_val)
        localStorage.setItem("iwQuote", JSON.stringify(stored_quote));
    }      
}

字符串

xzv2uavs

xzv2uavs2#

我认为在你更新对象之后,你再次推动数组,它创建了一个重复的对象。

function updateQuoteProduct(qP, qP_val){
var stored_quote = JSON.parse(localStorage.getItem("iwQuote")); 

var objIndex = stored_quote.findIndex((obj => obj.qid === qP));

stored_quote[objIndex].qty = parseInt(qP_val);

localStorage.setItem("iwQuote", JSON.stringify(stored_quote));

字符串
}

相关问题