js如何高效更改对象中属性名

clipboard.png
如图中的一个json对象:

[
    {
        "Id":"3972679ef2c04151972b376dd88e6413",
        "T_CourseId":"7a4494aae1804d3e94094583249750fe",
        "CourseName":"英语",
        "Code":"english"
    },
    {
        "Id":"5665d803e7994b26a56c6287d12c2090",
        "T_CourseId":"75761ad2ce23498c9f9db134ab844aec",
        "CourseName":"药物化学",
        "Code":"ywhx"
    }
]

怎么使用js高效的将其中的CourseName更改为title,得到结果如下:

[
    {
        "Id":"3972679ef2c04151972b376dd88e6413",
        "T_CourseId":"7a4494aae1804d3e94094583249750fe",
        "title":"英语",
        "Code":"english"
    },
    {
        "Id":"5665d803e7994b26a56c6287d12c2090",
        "T_CourseId":"75761ad2ce23498c9f9db134ab844aec",
        "title":"药物化学",
        "Code":"ywhx"
    }
]
阅读 23.7k
7 个回答
      var aaa = [
    {
        "Id":"3972679ef2c04151972b376dd88e6413",
        "T_CourseId":"7a4494aae1804d3e94094583249750fe",
        "CourseName":"英语",
        "Code":"english"
    },
    {
        "Id":"5665d803e7994b26a56c6287d12c2090",
        "T_CourseId":"75761ad2ce23498c9f9db134ab844aec",
        "CourseName":"药物化学",
        "Code":"ywhx"
    }
]
   var bbb= JSON.parse(JSON.stringify(aaa).replace(/CourseName/g,"title"));
    console.log(bbb)
arr = JSON.parse(jsonObj);
arr.map(item => {
    item.title = item.CourseName;
    delete item.CourseName;
    return item;
})
var arr = [
    {
        "Id":"3972679ef2c04151972b376dd88e6413",
        "T_CourseId":"7a4494aae1804d3e94094583249750fe",
        "CourseName":"英语",
        "Code":"english"
    },
    {
        "Id":"5665d803e7994b26a56c6287d12c2090",
        "T_CourseId":"75761ad2ce23498c9f9db134ab844aec",
        "CourseName":"药物化学",
        "Code":"ywhx"
    }
];
arr.forEach(function(item){
    item.title = item.CourseName;
    delete item.CourseName;
})


或者对每一项用JSON.stringify()转换成字符串,用replace替换,再用JSON.parse()转回来

如果只是json的话。。那就简单多了
replace一下就行了。

目前觉得还是 转换字符串然后replace,如果是遇到多重对象嵌套也可以用

新手上路,请多包涵

用foreach的方式,不要用replace的方式,万一你的属性里面包含了该字符串就被替换掉了,当然这个可能性很小。

var aaa = [
    {
        "Id":"3972679ef2c04151972b376dd88e6413",
        "T_CourseId":"7a4494aae1804d3e94094583249750fe",
        "CourseName":"英语",
        "Code":"english"
    },
    {
        "Id":"5665d803e7994b26a56c6287d12c2090",
        "T_CourseId":"75761ad2ce23498c9f9db134ab844aec",
        "CourseName":"药物化学",
        "Code":"ywhx"
    }
]
var copyTrans = function(obj, typeArr) {
    let result;
    let toString = Object.prototype.toString;
    if(toString.call(obj) === '[object Array]'){
        result = [];
        for(let i = 0; i < obj.length; i++){
            result[i] = copyTrans(obj[i], arguments[1])
        }
    }else if(toString.call(obj) === '[object Object]'){
        result = {};
        for (let _key in obj) {
            if (obj.hasOwnProperty(_key)) {
                let flag = 0, _value = null;
                for (let j = 0; j < arguments[1].length; j ++) {
                    if (arguments[1][j].key === _key) {
                        flag = 1;
                        _value = arguments[1][j].value
                    }
                }
                if (flag)
                    result[_value] = copyTrans(obj[_key], arguments[1])
                else
                    result[_key] = copyTrans(obj[_key], arguments[1])
            }
        }
    }else{
        return obj
    }
    return result
};
console.log(copyTrans(aaa, [{ key: "CourseName", value: "title" }]));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题