[jQuery]JSON陣列字串刪除及修改
當然也得知道如何刪除及修改,
其實以array object處理JSON字串非常簡單,
但是記得設計JSON結構時,跟資料庫一樣要有索引鍵值。
來看看如何實做。
我們還是以上次的字串結構為範例。
function CompanyList(CompanyName, CompanyID, billingAddList) {
this.CompanyName = CompanyName;
this.CompanyID = CompanyID;
this.billingAddList= billingAddList;
}
修改時,只要找到相同節點,並指定節點的值即可。
如果該值得結構為List,記得先new object後,
再指定object為節點的值。
$('#editCompany').click(function () {
var a = false;
var jsonArr = $.makeArray($.parseJSON(localStorage.getItem("demoNestedData")));
if (typeof (jsonArr) != 'undefined' && jsonArr.length != 0) {
$.each(jsonArr, function (i, item) {
//找到相對應的companyNA節點。
if (item.CompanyName == $('#companyNA').find(":selected").text()) {
//指定節點內CompanyID的值
item.CompanyID = $('#CompanyID').val();
a = true;
return false;
}
});
if (a)
localStorage.setItem('demoNestedData', JSON.stringify(jsonArr));
else
alert('無此節點資料。');
}
});
刪除同上,一樣找到相同的節點,即可刪除。
$('#delCompany').click(function () {
var a = false;
var jsonArr = $.makeArray($.parseJSON(localStorage.getItem("demoNestedData")));
if (typeof (jsonArr) != 'undefined' && jsonArr.length != 0) {
$.each(jsonArr, function (i, item) {
//找到相對應的companyNA節點。
if (item.CompanyName == $('#companyNA').find(":selected").text()) {
//刪除節點object
delete jsonArr[i];
a = true;
return false;
}
});
if (a) {
jsonArr = jsonArr.filter(function (v) { return v !== null });
localStorage.setItem('demoNestedData', JSON.stringify(jsonArr));
}
else
alert('無此節點資料。');
}
});
也許會有人有疑問,為什麼總是看到下面這行程式碼?
這是因為delete object後,這個節點會變成null,
為了避免造成判斷上的錯誤,
所以就直接執行下面這行指令將null移除。
jsonArr = jsonArr.filter(function (v) { return v !== null });
以上幾篇是為了怕自己忘記,
所以將自己知道的JSON處理方式記錄下來。
如果您有更好的方法,
也可以跟我說。
沒有留言:
張貼留言