VUE、JS对数组对象进行数据改造

要求将数组对象按一定格式转换,key为c0、c1等,value如果是数字不变 不是数字变为1,同时每个对象第一位不用动

      data1: [
        { id: 1, qqq: 'q', www: 'w' },
        { id: 2, qqq: 22, www: 's' },
        { id: 3, qqq: 33, www: 'x' },
      ]
    //要求将数组对象按一定格式转换,key为c0、c1等,value如果是数字不变 不是数字变为1,同时每个对象第一位不用动
    let newData = []
    this.data1.forEach((element, ind) => {
      let datas = {}
      Object.prototype[Symbol.iterator] = function () {
        const keys = Object.keys(this)
        let index = 0
        return {
          next: () => {
            return {
              value: [keys[index], this[keys[index++]]], // 每次迭代的结果
              done: index > keys.length, // 迭代结束标识 false停止迭代,true继续迭代
            }
          },
        }
      }
      //keys和values为带index的数组,方便按顺序操作对象
      let keys = Object.keys(element)
      let values = Object.values(element)
      for(let i = 0;i<keys.length;i++){
        let cc = 'c'+i
        if(i === 0){
          datas[cc] = values[i]
        }else{
          datas[cc] = typeof(values[i])==='number'?values[i]:1
        }
      }
        newData.push(datas)
    })
    console.log(newData)

先给对象添加iterator接口,方便遍历

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值