2016-11-28 4 views
3

拡散体...演算子を使用して、オブジェクトの配列を別のオブジェクトと組み合わせて単一のオブジェクトを作成する簡単な方法はありますか?この例では、私が達成しようとしているものを示していますオブジェクトの配列を親オブジェクトに広げる

const arrayOfObjects = [ 
    { x: 'foo' }, 
    { y: 'bar' } 
]; 

const obj = { 
    hello: 'world' 
}; 

次のように私が探している出力は次のとおりです。

{ 
    x: 'foo', 
    y: 'bar', 
    hello: 'world' 
} 

私は他のものの中で、次のことを試してみたが、それはdoesnの意図した出力が得られません。

{ 
    hello: 'world' 
    ...arrayOfObjects 
} 

// Gives 
{ 
    0: { x: 'foo' }, 
    1: { y: 'bar' }, 
    hello: 'world' 
}; 

スプレッド演算子を賢明に使用してこれを行うことはできますか?

+0

'Object.assign()'はこの仕事に非常に役立つツールです。 – Redu

答えて

10

あなたはUがObject.assign()を使用することができますスプレッド構文...

const arrayOfObjects = [{ 
 
    x: 'foo' 
 
}, { 
 
    y: 'bar' 
 
}]; 
 

 
const obj = { 
 
    hello: 'world' 
 
}; 
 

 
var result = Object.assign({}, obj, ...arrayOfObjects); 
 
console.log(result)

+0

ありがとう、それを行う最善の方法と思われる。面白いことに、「...」だけではできない方法がありますが、これは素晴らしいことです。ありがとう! – joshfarrant

+0

あなたは大歓迎です。 –

2

Object.assign()を使用することができます。

Object.assign(obj, ...arrayOfObjects) 

このオプションは、新しいインスタンスを作成する代わりにオブジェクトobjを変更します。

+0

これがオブジェクトを突然変異させることを明確にしてくれてありがとう。これはオブジェクトのプロパティでも機能します: 'let foo = {bar:{}}; Object.assign(foo.bar、... arrayOfObjects); ' – inostia

関連する問題