ES6 - 克隆一个对象并将其键重命名为一行?

时间:2017-09-26 12:17:31

标签: javascript object ecmascript-6 clone destructuring

有没有办法解构克隆 register_error_handler(MEMORY_LEAK, 'function_that_handles_that'); 到另一个,在此过程中重命名它的密钥?

示例

object

是否有一种简单的方法可以将结果存储在一个对象中,而不是两个不同的变量let getUser = () => { return {first: "Radio", last: "Reve"} } let {first: firstName, last: lastName} = getUser() let o = {firstName: firstName, lastName: lastName} // This is the line I don't wanna have to write firstName

我从服务器接收一个带有10个键的对象,我只想选择2个键,并重命名这些键,没有额外的库,也没有使用本机一致的特殊功能。

1 个答案:

答案 0 :(得分:1)

据我所知,目前无法使用母语语法进行搜索。

我想出了一个可能有帮助的通用解决方案:

let cloneAndRename = (obj, renames) => {
    let clone = {};
    Object.keys(obj).forEach(function (key) {
        if (renames[key] !== undefined) {
            clone[renames[key]] = obj[key];
        } else {
            clone[key] = obj[key];
        }
    });
    return clone;
}

像这样使用:

let o = cloneAndRename(getUser(), {first: 'firstName', last: 'lastName'});