【问题标题】:How do I update specific key value of the local storage array?如何更新本地存储阵列的特定键值?
【发布时间】:2014-06-05 04:32:31
【问题描述】:

我有一个像下面这样的本地存储阵列

pageItems  = {"stationID":"145","categoryID":"-1","pickupDate":"2014-04-22","pickupTime":"08:00","returnDate":"2014-04-23","returnTime":"08:00","milage":"false","miles":"","attributes":[[],[]],"additionals":[[],[]]}

我需要将 categoryID 值更新为 65

pageItems  = {"stationID":"145","categoryID":"65","pickupDate":"2014-04-22","pickupTime":"08:00","returnDate":"2014-04-23","returnTime":"08:00","milage":"false","miles":"","attributes":[[],[]],"additionals":[[],[]]}

【问题讨论】:

  • 你可以使用JSON.parse,设置你的值,然后JSON.stringify。有关更多详细信息和演示,请参阅我的答案
  • 这会帮助你Click here

标签: jquery arrays local-storage


【解决方案1】:

试试这个

var pageItems = {
            "stationID": "145",
            "categoryID": "-1",
            "pickupDate": "2014-04-22",
            "pickupTime": "08:00",
            "returnDate": "2014-04-23",
            "returnTime": "08:00",
            "milage": "false",
            "miles": "",
            "attributes": [[], []],
            "additionals": [[], []]
};

function setObject(key, obj) {
    localStorage.setItem(key, JSON.stringify(obj));
}

function getObject(key) {
    return JSON.parse(localStorage.getItem(key));
}

function updateItem(key, property, value)
{
    var obj = getObject(key);
    obj[property] = value;    
    setObject(key, obj);
}

//set object to sessionStorage
setObject('test', pageItems);

//update object property in sessionStorage
updateItem('test', 'categoryID', 65);

//get object from sessionStorage
getObject('test');

这里是 Demo

【讨论】:

    【解决方案2】:

    您可以使用以下;

    var pageItems  = '{"stationID":"145","categoryID":"-1","pickupDate":"2014-04-22","pickupTime":"08:00","returnDate":"2014-04-23","returnTime":"08:00","milage":"false","miles":"","attributes":[[],[]],"additionals":[[],[]]}';
    
    var json = JSON.parse(pageItems);
    
    json.categoryID = 65;
    
    pageItems_v2 = JSON.stringify(json);
    

    这是一个工作演示:Demo

    【讨论】:

      【解决方案3】:

      你可以像这样使用

      pageItems.categoryID=65;
      

      Fiddle

      【讨论】:

        【解决方案4】:

        一次或多次更新,或新插入:

        function updateStorage(keyName, newkeypairs=[]){
            const obj = JSON.parse(localStorage.getItem(keyName));
            newkeypairs.map(n => obj[Object.keys(n)] = Object.values(n)[0]);
            localStorage.setItem(keyName,JSON.stringify(obj));
        }
        
        //single
        updateStorage("company", [{name:"ACME"}])
        
        //multiple
        updateStorage("company", [{name:"ACME"},{location:"USA"}])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-24
          • 2014-03-22
          • 2023-03-18
          相关资源
          最近更新 更多