我想创建一个可以存储在localstorage中的字符串,以便我可以在以后添加,删除。 我想用这种格式创建我的json字符串。
var frmTaxYear = [{
"CategoryDisplayText": abc,
"CategoryId": 1,
"taxyear": {
"taxYearId": 1,
"taxYearDisplayText": abc
}
}]
[{
"CategoryDisplayText": abc2,
"CategoryId": 2,
"taxyear": {
"taxYearId": 2,
"taxYearDisplayText": abc1
}
}]
我写的代码是
function addToCart() {
var taxyearObj = [];
$('[name="Taxyear"]:checked').map(function() {
taxyearObj.push({
"taxYearId": this.value,
"taxYearDisplayText": $('label[id=' + this.id + ']').text()
});
});
if (localStorage.getItem("taxyear") !== null) {
// findAndRemove(localStorage.getItem("taxyear"), 'CategoryId', CategoryId.val());
var frmTaxYear = [{
"CategoryDisplayText": CategoryDisplayText.text(),
"CategoryId": CategoryId.val(),
"taxyear": taxyearObj
}];
var storedTaxyear = JSON.parse(localStorage.getItem("taxyear"));
storedTaxyear.push(frmTaxYear);
localStorage.setItem("taxyear", JSON.stringify(storedTaxyear));
} else {
var frmTaxYear = [{
"CategoryDisplayText": CategoryDisplayText.text(),
"CategoryId": CategoryId.val(),
"taxyear": taxyearObj
}];
localStorage.setItem('taxyear', JSON.stringify(frmTaxYear));
}
}
但问题是当用户第一次点击添加到购物车时,它作为对象存储在本地存储中,当用户点击添加到购物车时,第二个列表存储为数组
答案 0 :(得分:0)
您正在将阵列推入阵列。避免这种情况的一种方法是将taxyear
初始化为[]
(如果它为空)并始终推送对象。然后,您不必定义frmTaxYear
两次:
if (localStorage.getItem("taxyear") == null) {
localStorage.setItem("taxyear", JSON.stringify([]));
}
var frmTaxYear = {
"CategoryDisplayText": CategoryDisplayText.text(),
"CategoryId": CategoryId.val(),
"taxyear": taxyearObj
};
var storedTaxyear = JSON.parse(localStorage.getItem("taxyear"));
storedTaxyear.push(frmTaxYear);
localStorage.setItem("taxyear", JSON.stringify(storedTaxyear));