2017-12-04 38 views
0

JavaScriptオブジェクトにいくつかのプロパティを一度に動的に追加するというシナリオです。JavaScriptオブジェクトに多数のプロパティを動的に追加する

たとえば、オブジェクト「データ」がある

var data = { 
    PropertyA: 1, 
    PropertyB: 2, 
    PropertyC: 3, 
} 

そして、最善の方法かに「extraData」を追加するのが最も簡単です何を「データ」

if(true){ 
    var extraData = { 
     PropertyD: 4, 
     PropertyE: 5, 
     PropertyF: 6, 
    } 
} else { 
    var extraData = { 
     PropertyX: 4, 
     PropertyY: 5, 
     PropertyZ: 6, 
    } 
} 

に余分なデータを追加"データ"?

+0

はhttps://stackoverflow.com/questions/171251/how-can-i-merge-propertiesを参照してください。 -of-two-javascript-objects-dynamically – RaphaMex

+2

[2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?](https://stackoverflow.com/questions/171251/how-can-i-merge-properties- of-two-javascript-objects-dynamically) –

+0

'Object.assign(data、condition? extraDataDEF:extraDataXYZ); '。 –

答えて

-1

最も現代的なアプローチは、ES6のspreadを使用することです:

const moreData = { ...data, extraData }; 

また、これはそれを行うの伝統的な方法だろう。ここでは

var moreData = Object.assign({}, data, extraData); 
+0

これはクールです。それはES6の権利ですか? –

+0

はい、これはES6です。 –

+1

素晴らしい、ありがとう –

-2

はそれを行うための良い方法です。

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script> 
    $(function(){ 
     var data = { 
      PropertyA: 1, 
      PropertyB: 2, 
      PropertyC: 3, 
     }; 
     if(true){ 
      var extraData = { 
       PropertyD: 4, 
       PropertyE: 5, 
       PropertyF: 6, 
      }; 
     } else { 
      var extraData = { 
       PropertyX: 4, 
       PropertyY: 5, 
       PropertyZ: 6, 
      }; 
     } 

     var object = $.extend({}, data, extraData); 

     console.log(object); 

    }); 
</script> 
+3

なぜこのようなことがJavascriptで簡単にできたら、jQueryのようなライブラリ全体を持ってくるのですか? –

+0

良い質問です!なぜjQueryが存在しても、JavaScriptはそこにあります。 –

1
Object.assign(data, extraData); 

あなたが代わりにこのような何かを行うことができ、データの値を変異させたくない場合は、次の

var newData = Object.assign({}, data, extraData);