修改后台传过来的json数据中对象的属性

前言

今天在实习中遇到的一个小问题,后端传过来的一个json数据结构,但是对象中的属性名跟我需要的不一样(因为我是渲染echarts中的数据,属性名要一样)

这是后台传过来的数据:

需求是我需要把属性名val改成value

代码

            const t = ["id", "name", "type", "value"]
            let newArr = []
            data.forEach((item) => {    //后台来的数据
                let newObj = {};
                for (var i = 0; i < t.length; i++) {
                    console.log(Object.keys(item)[i])
                    newObj[t[i]] = item[Object.keys(item)[i]]
                }
                newArr.push(newObj)
            })
            console.log(newArr)

其实就是使用object,keys去进行转换,结果:

后来查资料发现了更有效率的方法(不像我这种暴力方法),在这里也分享给大家

代码

如果你是一维数组,只需要这样
 function copyTransFun(data) {
      data.forEach((item, value) => {
        if (item.val) {
          item.value= item.val;
          delete item.val;
        }
      });
    }
    copyTransFun(data)   //data为后台数据

如果你是二维数组,你可以加入递归,如udata是一个二维数组对象
       if (item.udata) {
          item.children = item.udata;
          delete item.userList;
          if (item.children.length) {
            this.copyTransFun(item.children);
          }
        }
posted @ 2022-07-21 17:23  宁静方能致远  阅读(224)  评论(0编辑  收藏  举报