2017-09-26 22 views
2

有没有办法将解构克隆object转换成另一个,重命名它的过程中的关键?ES6 - 克隆一个对象并在一行中重命名它的键?

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 

有一种简单的方法来具有存储在一个对象,而不是两个不同的变量,firstNamelastName结果?

我收到一个对象从10个按键的服务器,我想挑只有2键,然后重命名这些键,没有额外的库也不在本地以一致的方式使用的特殊功能。

+0

'VAR副本= Object.assign({}的getUser())' – Redu

+0

不是真的重复。我添加了评论,以澄清我想要的 – Radioreve

+0

@Radioreve它仍然是重复的。看到第一个答案:“换句话说,没有办法”将对象解构成对象“,或者”从对象中选择对象“,只能将对象解构为变量。” – str

回答

0

它目前无法从我搜索使用本地语言的语法,据我可以告诉。

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

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'}); 
+0

不是我想要的,但谢谢:)它似乎不可能与一个基本的班轮和语言结构......但至少! – Radioreve

+0

更新了我的回答,说它可能无法用基本语法来完成。但是,解决方案的逻辑还是很好的。 –