2016-04-26 97 views
0

我怎麼可以做以下場景ES6如何使用對象構建在ES6

const x = {a: 10, aa: 100, b: 20, bb: 200} 
const AA = { 
    a: x.a, 
    aa: x.aa 
} 
const BB = { 
    b: x.b, 
    bb: x.bb 
} 

我期待像

const x = {a: 10, aa: 100, b: 20, bb: 200} 
const AA = ({ a, aa } from x) 
const BB = ({ b, bb } from x) 

回答

0

您既可以定義常量AABB第一。 ..

const AA = {}, BB = {}; 
const x = {a: 10, aa: 100, b: 20, bb: 200}; 
({a: AA.a, aa: AA.aa, b: BB.b, bb: BB.bb} = x); 

...或者你可以先解構對象,然後定義AABB與解構變量:

const x = {a: 10, aa: 100, b: 20, bb: 200} 
const {a, aa, b, bb} = x; 
const AA = {a, aa}; 
const BB = {b, bb}; 
+0

感謝您的答覆nils。我正在尋找一些簡單的方法。似乎http://underscorejs.org/#pick或一些類似的功能可以幫助我,因爲沒有內置的方式在ES6 – SRAVAN

0

解構的對象是這個職位的錯誤的工具。你想要什麼有時被稱爲「採摘」,可以很容易地實現爲:

function pluck(obj, ...props) { 
    const result = {}; 
    for (let prop of props) { 
    result[prop] = obj[prop]; 
    } 
    return result; 
} 

const AA = pluck(x, 'a', 'aa'); 
const BB = pluck(x, 'b', 'bb'); 
+0

我知道下劃線的選擇可以做到這一點。我想知道ES6有一些這樣的語法。現在它對我很清楚,沒有這樣的建築物!感謝您的迴應! 參考:http://underscorejs.org/#pick – SRAVAN