为了账号安全,请及时绑定邮箱和手机立即绑定

如何修改对象中的键值?

如何修改对象中的键值?

富国沪深 2022-11-03 10:30:00
我有第一个对象:var objectOne = { my_key_1 : value1, my_key_2 : value2 } ; 我想将该对象复制到另一个对象中,但键名不同。键名应该这样写“myKey1”,所以我做了这个函数:function stringRenaming(oldStr)  {        oldVStr = oldStr.split("_") ;    var newStr = oldStrr[0] ;    for(i = 1 ; i < oldStr.length ; i++ ) {        newStr += oldStr[i].substring(0, 1).toUpperCase()+oldStr[i].substring(1) ;    }    return newStr ;}下面的代码完美地复制了第二个对象中的第一个对象:var objectTwo = {} ;for (var i in objectOne) {    if((objectOne[i] !== '') && (objectOne[i] !== undefined) && (objectOne[i] !== null) && (objectOne[i].length !== 0)) {        objectTwo[i] = objectOne[i] ;    }}但是,我找不到将重命名功能应用于第二个对象的键的方法。我试图用替换线objectTwo[i] = objectOne[i];,objectTwo[i] = objectOne[i];但它不起作用。我尝试在第一个循环之后添加另一个循环来编辑键值,但效果相同。大多数时候,我的键名很好,但值未定义。我不知道现在该尝试什么,您能帮忙吗?
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您可以将下划线和后面的字符替换为大写字符。


var format = s => s.replace(/(_)(.)/g, (_, __, c) => c.toUpperCase()),

    objectOne = { my_key_1: 'value1', my_key_2: 'value2' },

    result = Object.fromEntries(Object.entries(objectOne).map(([k, v]) => [format(k), v]));


console.log(result);


没有箭头函数和解构。


var format = function (s) { return s.replace(/(_)(.)/g, function (_, __, c) { return c.toUpperCase(); }); },

    objectOne = { my_key_1: 'value1', my_key_2: 'value2' },

    result = Object.keys(objectOne).reduce(function (r, key) {

        r[format(key)] = objectOne[key];

        return r;

    }, {});


console.log(result);


查看完整回答
反对 回复 2022-11-03
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信