2017-09-26 24 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

更新了我的回答,說它可能無法用基本語法來完成。但是,解決方案的邏輯還是很好的。 –