js 数组格式转换

实际需求中总是遇到,后端给的一维数组需要转成一定的格式才能在业务中去使用或操作,下面是我常遇到的几种转化:

1、一维数组转json

初始数组:
const arr = [
            {
              classKey: "jblx",
              classKeyName: "基本类型",
              key: "contract_name",
              name: "合同名称"
            },
            {
              classKey: "jblx",
              classKeyName: "基本类型",
              key: "contract_name1",
              name: "合同名称1",
            },
            {
              classKey: "qsxx",
              classKeyName: "签署信息",
              key: "cust_credit",
              name: "用电户社会信用代码"
            },
            {
              classKey: "qsxx",
              classKeyName: "签署信息",
              key: "cust_credit1",
              name: "用电户社会信用代码1"
            },
 ]
  转化成
  {
    jblx: [
        {
          classKey: "jblx"
          classKeyName: "基本类型"
          key: "contract_name"
          name: "合同名称"
        },
       {
         classKey: "jblx"
         classKeyName: "基本类型"
         key: "contract_name1"
         name: "合同名称1"
       }
      ],
    qsxx: [
        {
          classKey: "qsxx"
          classKeyName: "签署信息"
          key: "cust_credit"
          name: "用电户社会信用代码"
        },
       {
         classKey: "qsxx"
         classKeyName: "签署信息"
         key: "cust_credit1"
         name: "用电户社会信用代码1"
       }
      ]
  }

arr.forEach((item) => {
    if (obj[item.classKey] == undefined) {
      obj[item.classKey] = []
   }
   obj[item.classKey].push(item)
})

里面数组也想换成json的话:
arr.forEach((item) => {
    if (obj[item.classKey] == undefined) {
      obj[item.classKey] = {}
   }
   obj[item.classKey][item.key] = item
})
  

2、一维数组拆分成多维数组

上面初始数组转化成:
[
  {
    classKey: "jblx",
    classKeyName: "基本类型",
    data: [
        {
          key: "contract_name",
          name: "合同名称"
        },
       {
         key: "contract_name1",
         name: "合同名称1"
       }
      ]
  },
  {
    classKey: "qsxx",
    classKeyName: "签署信息",
    data: [
        {
          key: "cust_credit"
          name: "用电户社会信用代码"
        },
       {
         key: "cust_credit1"
         name: "用电户社会信用代码1"
       }
      ]
    }
]

let keys = [];
let newArr = [];
  data.map((v)=>{
    const data = {
        name:v.name,
        key:v.key
    }
    let index = keys.indexOf(v.classKey)
    if (index>-1) {
        newArr[index].data.push(data)
    } else {
        keys.push(v.classKey)
        newArr.push({
            classKey: v.classKey,
            classKeyName: v.classKeyName,
            data: [data],
        })
    }
  })

console.log(newArr);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容