【问题标题】:How to modify key values in an object?如何修改对象中的键值?
【发布时间】:2020-10-26 22:06: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];,但它不起作用。

我尝试在第一个循环之后添加另一个循环来编辑键值,但效果相同。大多数时候我的键名很好,但值未定义。

我现在不知道该尝试什么,您能帮忙吗?

【问题讨论】:

    标签: javascript json loops object


    【解决方案1】:

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

    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);

    【讨论】:

    • 嗨@NinaScholz!我对你的 sn-p 有最后一个问题。事实上,我必须在标签管理系统(谷歌标签管理器)中实现我的代码,它似乎不支持与 ECMAScript 6 (w3schools.com/js/js_es6.asp) 相关的箭头和数组解构等语法。所以我试图“翻译”你的代码:var format = function(s) { s.replace(/(_)(.)/g, (_, __, s)) ; s.toUpperCase() ; return s ; }我不知道它是否有效,但我完全不知道你的第三行代码。我不知道如何用更经典的方式来写它......你能帮忙吗?
    • 嗨@NinaScholz,第二种方法“格式”似乎不适用于“结果”:(
    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多