1. 程式人生 > >JS arr陣列轉化成json物件,資料改造並對json物件自定義

JS arr陣列轉化成json物件,資料改造並對json物件自定義

有時候後臺會返回一些奇怪的資料,不能滿足業務邏輯需要,所以我們就需要對 這部分資料進行自定義。

假如後臺返回的資料如圖(部分截圖)

而我們需要的資料結構是這樣的:

[{"name":"全部","id":0},{"name":"預約","id":1},{"name":"已到店","id":2},{"name":"已繳意向金","id":3},{"name":"已簽約","id":4},{"name":"終止","id":5}]

所以我們就需要對返回的資料進行改造,思路如下

①迴圈取出我們需要的資料,push進陣列中。

 let list = {0: "全部", 10: "預約", 20: "已到店", 40: "已繳意向金", 60: "已簽約", 70: "中止"}
 var arr = []
 for (let i in list) {
      arr.push(list[i])
 }
 console.log(arr) // 結果如下:["全部", "預約", "已到店", "已繳意向金", "已簽約", "中止"]

這樣我們通過迴圈就獲得了我們想要獲取的值。

②把陣列轉化成 json物件,給每個值新增一個對應的鍵,並新增新的屬性,例如新增 id屬性。

let list = {0: "全部", 10: "預約", 20: "已到店", 40: "已繳意向金", 60: "已簽約", 70: "中止"}
var arr = []
for (let i in list) {
    arr.push(list[i])
 }
 console.log(arr)
 var json = []
 for (var i = 0; i < arr.length; i++) {
     var j = {}
     j.name = arr[i]
     j.id = i
     // 這裡還可以繼續新增屬性 j.屬性 = 值
     json.push(j)
  }
 console.log(JSON.stringify(json))
// 結果如下 [{"name":"全部","id":0},{"name":"預約","id":1},{"name":"已到店","id":2},{"name":"已繳意向金","id":3},{"name":"已簽約","id":4},{"name":"中止","id":5}]

綜上,結合上面的步驟 就獲取了我們最終的值,其實上面最主要的一步就是這

為什麼要把 var j = {}放在迴圈的內部而不能放在外部,其實跟 引用資料型別 有關係。具體可參考下面這篇文章;

https://www.2cto.com/kf/201710/688020.html