数据格式转换(一)

最近开始对接口,需要对数据格式转换自如。比如将一个数组拼接成字符串,这种情况一般用来拼接后传参容易遇到,将字符串转换为数组对象格式,一般会用户接收数据,转换到页面上。

下面举例说明:

目标数组:

allStore: [{
    storeId: '',
    storeName: ''
}],

现数据格式:

storeId: 'c1d413066b454a2dae1b1eb4bac1be83, c1d413066b454a2dae1b1eb4bac1be83',

storeName: 'zara,zara'

(一)由目标数组转为字符串,用 forEach 循环,然后用逗号拼接。

this.allStore.forEach(item => {
    if(item == this.allStore.length - 1){
        storeId += item.storeId
        storeName += item.storeName
    }else {
        storeId += item.storeId + ','
        storeName += item.storeName + ','
    }
})

(二)由字符串转为目标数组

首先将字符串转为转换为数组,这里是两个数组,再通过遍历其中一个数组,拿到 index,将两个数组中内容,作为一个对象push到一个新定义的数组中去。这里强调一下拿到 index 的重要性。

最初分别循环两个数组,将其内容,作为对象 push 到新数组中。

//错误做法
let arr = []
data.storeId.forEach(item => {
    arr.push({storeId: item})
})
data.storeName.forEach(item => {
    arr.push({storeName: item})
})

由于分别添加,最终数组格式:

[{storeId: 'c1d413066b454a2dae1b1eb4bac1be83'},{storeId: 'c1d413066b454a2dae1b1eb4bac1be83'},{storeName: 'zara'},{storeName: 'zara'}]

目标格式:

[{storeId: 'c1d413066b454a2dae1b1eb4bac1be83',storeName: 'zara'},{storeId: 'c1d413066b454a2dae1b1eb4bac1be83',storeName: 'zara'}]

字符串转为转换为数组

data.data.list.forEach(item => {
  item.storeName = item.storeName.split(',')
  item.storeId= item.storeId.split(',')
})

这里只需遍历其中一个数组,拿到 index,将 storeId 和 storeName 一起作为对象 push 到新数组中。

let arr = []
data.storeName.forEach((item, index) => {
    arr.push({storeId:data.storeId[index], storeName:data.storeName[index]})
})
arr.forEach(item => {
    this.allStore.push(item)
})

案例展示:

let data = {
    storeId: '1111111111,2222222222,33333333',
    storeName: '小陈,小黄,小刘'
}
let storeId = data.storeId.split(',');
let storeName = data.storeName.split(',');
let allStore = [];
storeId.forEach((item, index)=>{
    allStore.push({
        storeId: item,
        storeName: storeName[index]
    })
})
console.log(allStore)

(三)把逗号分割的字符串,取第一个逗号前的内容显示在页面上。

首先通过 split 将字符串分割到数组中,遍历数组,通过判断 index 为0时,将内容 push 到数组中。这里注意将数组置空。

data.data.list.forEach(item => {
  item.couponDetails = item.couponDetails.split(',')
  item.couponDetails.forEach((item1, index) => {
    if(index == 0){
      item.couponDetails = []
      item.couponDetails.push(item1)
      return
    }
  })
})

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值