有时候后台会返回一些奇怪的数据,不能满足业务逻辑需要,所以我们就需要对 这部分数据进行自定义。
假如后台返回的数据如图(部分截图)
而我们需要的数据结构是这样的:
[{"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 = {}放在循环的内部而不能放在外部,其实跟 引用数据类型 有关系。具体可参考下面这篇文章;