[jQuery]JSON陣列字串刪除及修改

Designed by Freepik
知道了新增JSON字串的方法後,
當然也得知道如何刪除及修改,
其實以array object處理JSON字串非常簡單,
但是記得設計JSON結構時,跟資料庫一樣要有索引鍵值。
來看看如何實做。
圖片來源Designed by Freepik
我們還是以上次的字串結構為範例。
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處理方式記錄下來。
如果您有更好的方法,
也可以跟我說。

沒有留言:

張貼留言

技術提供:Blogger.