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

猜你喜欢

转载自blog.csdn.net/qq_35430000/article/details/82764495