2016-04-20 6 views
2

私は、ES6を使って関数を使って2つのオブジェクトを結合オブジェクトに結合したいのですが、これを行う方法はわかりません。これを行うための最善の方法は何ですかES6を使用して、2つのオブジェクトを関数で新しいオブジェクトにマージするにはどうすればよいですか?

const new = { 
    first: function() { 
    return { 
     type: FIRST 
    }; 
    }, 
    second: function() { 
     return { 
     type: SECOND 
    }; 
    } 
} 

:?新しいオブジェクトに

const first = { 
    first: function() { 
    return { 
     type: FIRST 
    }; 
    } 
}; 

const second = { 
    second: function() { 
    return { 
     type: SECOND 
    }; 
    } 
}; 

例えば、私はこれらの2つのオブジェクトをマージしたいのですが私はObject.assign({}, first, second);を試しましたが、これは{}を返しました。

助けていただけたら幸いです!あなたはこのためにObject.assignを使用することができるはずです

+0

ねえロブは、それは私の問題で、大漁の原因である可能性があります! –

+0

* new *は[keyword](http://www.ecma-international.org/ecma-262/6.0/#sec-keywords)であり、識別子として使用できないことに注意してください。申し訳ありませんが、脳は* const *で消えます。 [* MDN:Object.assign *](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)を参照してください。 ;-) – RobG

答えて

2

:以下クリスの答えで述べたように

注、これは最初のオブジェクトを変異させます。

JSBin example

var joined = Object.assign(first, second); 

// joined: 

{ 
    first: function first() { 
    return { 
     type: FIRST 
    }; 
    }, 
    second: function second() { 
    return { 
     type: SECOND 
    }; 
    } 
} 
+0

ありがとうございましたヨルダン、私はObject.assignを試して何らかの理由で{}戻っていた、タイプミスだったはずです。 –

+0

* first *を変更すると、新しいオブジェクトは作成されません( 'joined === first')。 – RobG

+1

私は何かが欠けていない限り... const宣言は、値への読み取り専用参照を作成します。保持している値が不変であることを意味するものではなく、変数識別子を再割り当てできないということだけではありません。あなたの編集にhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const – JordanHendrix

4

あなたの例では、実際に作業する必要があります

var joined = Object.assign(first, second); 

var joined = Object.assign({}, first, second); 

は、次のような最初のパラメータとして空のオブジェクトずに割り当てる使用して注意してくださいfirstに変異したとなる。

JSBin例独自のコードを実行している(と作業):

https://jsbin.com/tekokawice/edit?js,console

+1

これは素晴らしい点です。最初のオブジェクトを変異させたくない – JordanHendrix

+1

ええ、絶対に - 元の作者の意図に依存していると思う - しかし、技術的には私たちの答えは両方とも正しいかもしれません(要求に応じて):) – Chris

+0

合意しました。パラメータ、私は間違いなくいずれかのオブジェクトを変異させたくありません。 –

関連する問題