にJavaScriptオブジェクトを追加します。私はが</p> <pre><code>options = { underscored: true } products = { foo: bar } </code></pre> <p>を考えると、他のJavaScriptオブジェクト
products = {
underscored: true
foo: bar
}
はJavascriptで別のオブジェクトにオブジェクトをプッシュすることが可能です取得したいのですが?
にJavaScriptオブジェクトを追加します。私はが</p> <pre><code>options = { underscored: true } products = { foo: bar } </code></pre> <p>を考えると、他のJavaScriptオブジェクト
products = {
underscored: true
foo: bar
}
はJavascriptで別のオブジェクトにオブジェクトをプッシュすることが可能です取得したいのですが?
<script>
function mix(source, target) {
for(var key in source) {
if (source.hasOwnProperty(key)) {
target[key] = source[key];
}
}
}
mix(options, products);
</script>
UPDATE:
より良いオプションの数がES6とES7は共通
ES6を取得して、今がある - これはobjectToMergeTo
const combinedObject = Object.assign(objectToMergeTo, source1, source2)
ES7を(変異させます構文の美しさをスプレッド演算子で) - このバージョンでは新しいインスタンスが作成されますが、スプレッド演算子を使用してオブジェクトに追加することはできません。 「バー」の周り
const combined = { ...source1, ...source2 }
'hasOwnProperty()'の+1です!これは、オブジェクトのプロパティを反復処理する適切な方法です。 – jwueller
お世話になりました。 – lemon
ピーター、そのES7の構文はちょうどそれらのプロパティではなく、全体として2つのオブジェクトを含む第3のオブジェクトを作成しているようです。 – TheEnvironmentalist
あなたはこれを行うことができます:
for(var key in options) {
products[key] = options[key];
}
効果的に2つのオブジェクトの変数を組み合わせることであろうと。 4年後
これは 'hasOwnProperty'チェックがなく、2つのオブジェクトに応じて予期しない結果が発生します。また、グローバル変数 'key'を作成しますが、これは悪いです。常に 'var'キーワードを使用してください! – jwueller
グローバル変数を修正しました。これを指摘してくれてありがとうございます。 –
var options = {
underscored: true
};
var products = {
foo: 'bar'
};
products.underscored = options.underscored;
alert(products.underscored+":"+products.foo);
プット引用符は、それが実際のオブジェクトの値、セミコロンとVARを持たせることができますが、ポイントを得ます。
編集:また注目に値する;
products.options = options;
alert(products.options.underscored);//alerts true
jquery.extend(製品、オプション)を使用できます。 jQuery.extendは2つのオブジェクトを結合し、ターゲットオブジェクト内の一致する要素値を乗り越えて結果のオブジェクトを返します。詳細はhttp://api.jquery.com/jquery.extend/
http://stackoverflow.com/questions/1334660/combining-javascript-objects-into-one – bkconrad