I have a local storage array like below
pageItems = {"stationID":"145","categoryID":"-1","pickupDate":"2014-04-22","pickupTime":"08:00","returnDate":"2014-04-23","returnTime":"08:00","milage":"false","miles":"","attributes":[[],[]],"additionals":[[],[]]}
I need to update categoryID value to 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":[[],[]]}
You can use following;
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);
Here is a working demo : Demo
Try this
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');
Here is the Demo
For single or multiple updates, or new inserts, at once:
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"}])